<?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 xml:base="" id="eglChooseConfig">
    <refentryinfo>
         <copyright>
             <year>2003-2014</year>
             <holder>The Khronos Group Inc.</holder>
         </copyright>
    </refentryinfo>
    <refmeta>
        <refentrytitle>eglChooseConfig</refentrytitle>
        <manvolnum>3G</manvolnum>
    </refmeta>
    <refnamediv>
        <refname>eglChooseConfig</refname>
        <refpurpose>
            return a list of EGL frame buffer configurations that match specified attributes
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>C Specification</title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>EGLBoolean <function>eglChooseConfig</function></funcdef>
                <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
                <paramdef>EGLint const * <parameter>attrib_list</parameter></paramdef>
                <paramdef>EGLConfig * <parameter>configs</parameter></paramdef>
                <paramdef>EGLint <parameter>config_size</parameter></paramdef>
                <paramdef>EGLint * <parameter>num_config</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>
    <refsect1 id="parameters"><title>Parameters</title>
        <variablelist>
            <varlistentry>
                <term><parameter>display</parameter></term>
                <listitem><para>Specifies the EGL display connection.</para></listitem>
            </varlistentry>
            <varlistentry>
                <term><parameter>attrib_list</parameter></term>
                <listitem><para>Specifies attributes required to match by configs.</para></listitem>
            </varlistentry>
            <varlistentry>
                <term><parameter>configs</parameter></term>
                <listitem><para>Returns an array of frame buffer configurations.</para></listitem>
            </varlistentry>
            <varlistentry>
                <term><parameter>config_size</parameter></term>
                <listitem><para>Specifies the size of the array of frame buffer configurations.</para></listitem>
            </varlistentry>
            <varlistentry>
                <term><parameter>num_config</parameter></term>
                <listitem><para>Returns the number of frame buffer configurations returned.</para></listitem>
            </varlistentry>
        </variablelist>
    </refsect1>
    <refsect1 id="description"><title>Description</title>
        <para>
            <function>eglChooseConfig</function> returns in
            <parameter>configs</parameter> a list of all
            <acronym>EGL</acronym> frame buffer configurations that
            match the attributes specified in
            <parameter>attrib_list</parameter>. The returned
            <type>EGLConfig</type>s can be used in any
            <acronym>EGL</acronym> function that requires an
            <acronym>EGL</acronym> frame buffer configuration.
        </para>
        <para>
            If <parameter>configs</parameter> is not
            <constant>NULL</constant>, up to
            <parameter>config_size</parameter> configs will be returned
            in the array pointed to by <parameter>configs</parameter>.
            The number of configs actually returned will be returned in
            *<parameter>num_config</parameter>.
        </para>
        <para>
            If <parameter>configs</parameter> is
            <constant>NULL</constant>, no configs will be returned in
            <parameter>configs</parameter>. Instead, the total number of
            configs matching <parameter>attrib_list</parameter> will be
            returned in *<parameter>num_config</parameter>. In this case
            <parameter>config_size</parameter> is ignored. This form of
            <function>eglChooseConfig</function> is used to determine
            the number of matching frame buffer configurations, followed
            by allocating an array of <type>EGLConfig</type> to pass
            into another call to <function>eglChooseConfig</function>
            with all other parameters unchanged.
        </para>
        <para>
            All attributes in <parameter>attrib_list</parameter>,
            including boolean attributes, are immediately followed by
            the corresponding desired value. The list is terminated with
            <constant>EGL_NONE</constant>. If an attribute is not
            specified in <parameter>attrib_list</parameter> then the
            default value (see below) is used (and the attribute is said
            to be specified implicitly). For example, if
            <constant>EGL_DEPTH_SIZE</constant> is not specified then it
            is assumed to be zero. For some attributes, the default is
            <constant>EGL_DONT_CARE</constant> meaning that any value is
            OK for this attribute, so the attribute will not be checked.
        </para>
        <para>
            Attributes are matched in an attribute-specific manner. Some
            of the attributes, such as <constant>EGL_LEVEL</constant>,
            must match the specified value exactly. Others, such as,
            <constant>EGL_RED_SIZE</constant> must meet or exceed the
            specified minimum values. If more than one EGL frame buffer
            configuration matching all attributes is found, then a list
            of configurations, sorted according to the ``best'' match
            criteria, is returned. The match criteria for each attribute
            and the exact sorting order is defined below.
        </para>
        <para>
            For the bitmask attributes
            <constant>EGL_CONFORMANT</constant>,
            <constant>EGL_RENDERABLE_TYPE</constant>, and
            <constant>EGL_SURFACE_TYPE</constant>, only the nonzero bits
            of the mask are considered when matching. Any bits that are
            zero in the specified bitmask attribute value may be either
            zero or one in the resulting config's attribute value.
        </para>
        <para>
            Attributes which may appear in
            <parameter>attrib_list</parameter>, and their descriptions
            and allowed values, are:
        </para>
        <variablelist>
            <varlistentry>
                <term><constant>EGL_ALPHA_MASK_SIZE</constant></term>
                <listitem><para>
                    Must be followed by a nonnegative integer that
                    indicates the desired alpha mask buffer size, in
                    bits. The smallest alpha mask buffers of at least
                    the specified size are preferred. The default value
                    is zero.
                </para>
                <para>
                    The alpha mask buffer is used only by OpenGL and
                    OpenGL ES client APIs.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_ALPHA_SIZE</constant></term>
                <listitem><para>
                    Must be followed by a nonnegative integer that
                    indicates the desired size of the alpha component of
                    the color buffer, in bits. If this value is zero,
                    color buffers with the smallest alpha component size
                    are preferred. Otherwise, color buffers with the
                    largest alpha component of at least the specified
                    size are preferred. The default value is zero.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_BIND_TO_TEXTURE_RGB</constant></term>
                <listitem><para>
                    Must be followed by
                    <constant>EGL_DONT_CARE</constant>,
                    <constant>EGL_TRUE</constant>, or
                    <constant>EGL_FALSE</constant>.
                    If <constant>EGL_TRUE</constant> is specified, then
                    only frame buffer configurations that support
                    binding of color buffers to an OpenGL ES RGB texture
                    will be considered. Currently only frame buffer
                    configurations that support pbuffers allow this. The
                    default value is <constant>EGL_DONT_CARE</constant>.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_BIND_TO_TEXTURE_RGBA</constant></term>
                <listitem><para>
                    Must be followed by one of
                    <constant>EGL_DONT_CARE</constant>,
                    <constant>EGL_TRUE</constant>, or
                    <constant>EGL_FALSE</constant>.
                    If <constant>EGL_TRUE</constant> is specified, then
                    only frame buffer configurations that support
                    binding of color buffers to an OpenGL ES RGBA
                    texture will be considered. Currently only frame
                    buffer configurations that support pbuffers allow
                    this. The default value is
                    <constant>EGL_DONT_CARE</constant>.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_BLUE_SIZE</constant></term>
                <listitem><para>
                    Must be followed by a nonnegative integer that
                    indicates the desired size of the blue component of
                    the color buffer, in bits. If this value is zero,
                    color buffers with the smallest blue component size
                    are preferred. Otherwise, color buffers with the
                    largest blue component of at least the specified
                    size are preferred. The default value is zero.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_BUFFER_SIZE</constant></term>
                <listitem><para>
                    Must be followed by a nonnegative integer that
                    indicates the desired color buffer size, in bits.
                    The smallest color buffers of at least the specified
                    size are preferred. The default value is zero.
                </para>
                <para>
                    The color buffer size is the sum of
                    <constant>EGL_RED_SIZE</constant>,
                    <constant>EGL_GREEN_SIZE</constant>,
                    <constant>EGL_BLUE_SIZE</constant>, and
                    <constant>EGL_ALPHA_SIZE</constant>, and does not
                    include any padding bits which may be present in the
                    pixel format. It is usually preferable to specify
                    desired sizes for these color components
                    individually.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_COLOR_BUFFER_TYPE</constant></term>
                <listitem>
                <para>
                    Must be followed by one of
                    <constant>EGL_RGB_BUFFER</constant> or
                    <constant>EGL_LUMINANCE_BUFFER</constant>.
                </para>
                <para>
                    <constant>EGL_RGB_BUFFER</constant> indicates
                    an RGB color buffer; in this case,
                    attributes <constant>EGL_RED_SIZE</constant>,
                    <constant>EGL_GREEN_SIZE</constant> and
                    <constant>EGL_BLUE_SIZE</constant> must be non-zero, and
                    <constant>EGL_LUMINANCE_SIZE</constant> must be zero.
                </para>
                <para>
                    <constant>EGL_LUMINANCE_BUFFER</constant> indicates a luminance color
                    buffer. In this case <constant>EGL_RED_SIZE</constant>,
                    <constant>EGL_GREEN_SIZE</constant>,
                    <constant>EGL_BLUE_SIZE</constant> must be zero, and
                    <constant>EGL_LUMINANCE_SIZE</constant> must be non-zero.
                </para>
                <para>
                    For both RGB and luminance color buffers,
                    <constant>EGL_ALPHA_SIZE</constant> may be zero or
                    non-zero.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_CONFIG_CAVEAT</constant></term>
                <listitem>
                <para>
                    Must be followed by
                    <constant>EGL_DONT_CARE</constant>,
                    <constant>EGL_NONE</constant>,
                    <constant>EGL_SLOW_CONFIG</constant>, or
                    <constant>EGL_NON_CONFORMANT_CONFIG</constant>.
                </para>
                <para>
                    If <constant>EGL_DONT_CARE</constant> is specified,
                    then configs are not matched for this attribute. The
                    default value is <constant>EGL_DONT_CARE</constant>.
                </para>
                <para>
                    If <constant>EGL_NONE</constant> is specified, then
                    configs are matched for this attribute, but only
                    configs with no caveats (neither
                    <constant>EGL_SLOW_CONFIG</constant> or
                    <constant>EGL_NON_CONFORMANT_CONFIG</constant>) will
                    be considered.
                </para>
                <para>
                    If <constant>EGL_SLOW_CONFIG</constant> is
                    specified, then only slow configs configurations
                    will be considered. The meaning of``slow'' is
                    implementation-dependent, but typically indicates a
                    non-hardware-accelerated (software) implementation.
                </para>
                <para>
                    If <constant>EGL_NON_CONFORMANT_CONFIG</constant> is
                    specified, then only configs supporting
                    non-conformant OpenGL ES contexts will be
                    considered.
                </para>
                <para>
                    If the EGL version is 1.3 or later, caveat
                    <constant>EGL_NON_CONFORMANT_CONFIG</constant> is
                    obsolete, since the same information can be
                    specified via the
                    <constant>EGL_CONFORMANT</constant> attribute on a
                    per-client-API basis, not just for OpenGL ES.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_CONFIG_ID</constant></term>
                <listitem>
                <para>
                    Must be followed by a valid integer ID that
                    indicates the desired EGL frame buffer
                    configuration. When a
                    <constant>EGL_CONFIG_ID</constant> is specified, all
                    other attributes are ignored. The default value is
                    <constant>EGL_DONT_CARE</constant>.
                </para>
                <para>
                    The meaning of config IDs is
                    implementation-dependent. They are used only to
                    uniquely identify different frame buffer
                    configurations.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_CONFORMANT</constant></term>
                <listitem>
                <para>
                    Must be followed by a bitmask indicating which types
                    of client API contexts created with respect to the
                    frame buffer configuration config must pass the
                    required conformance tests for that API. Mask bits
                    include:
                </para>
                <variablelist>
                    <varlistentry>
                        <term><constant>EGL_OPENGL_BIT</constant></term>
                        <listitem><para>
                            Config supports creating OpenGL contexts.
                        </para></listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><constant>EGL_OPENGL_ES_BIT</constant></term>
                        <listitem><para>
                            Config supports creating OpenGL ES 1.0
                            and/or 1.1 contexts.
                        </para></listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><constant>EGL_OPENGL_ES2_BIT</constant></term>
                        <listitem><para>
                            Config supports creating OpenGL ES 2.0 contexts.
                        </para></listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><constant>EGL_OPENVG_BIT</constant></term>
                        <listitem><para>
                            Config supports creating OpenVG contexts.
                        </para></listitem>
                    </varlistentry>
                </variablelist>
                <para>
                    For example, if the bitmask is set to
                    <constant>EGL_OPENGL_ES_BIT</constant>, only frame
                    buffer configurations that support creating
                    conformant OpenGL ES contexts will match. The
                    default value is zero.
                </para>
                <para>
                    Most EGLConfigs should be conformant for all
                    supported client APIs, and it is rarely desirable to
                    select a nonconformant config. Conformance
                    requirements limit the number of non-conformant
                    configs that an implementation can define.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_DEPTH_SIZE</constant></term>
                <listitem>
                <para>
                    Must be followed by a nonnegative integer that
                    indicates the desired depth buffer size, in bits.
                    The smallest depth buffers of at least the specified
                    size is preferred. If the desired size is zero,
                    frame buffer configurations with no depth buffer are
                    preferred. The default value is zero.
                </para>
                <para>
                    The depth buffer is used only by OpenGL and OpenGL
                    ES client APIs.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_GREEN_SIZE</constant></term>
                <listitem><para>
                    Must be followed by a nonnegative integer that
                    indicates the desired size of the green component of
                    the color buffer, in bits. If this value is zero,
                    color buffers with the smallest green component size
                    are preferred. Otherwise, color buffers with the
                    largest green component of at least the specified
                    size are preferred. The default value is zero.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_LEVEL</constant></term>
                <listitem><para>
                    Must be followed by an integer buffer level
                    specification. This specification is honored
                    exactly. Buffer level zero corresponds to the
                    default frame buffer of the display. Buffer level
                    one is the first overlay frame buffer, level two the
                    second overlay frame buffer, and so on. Negative
                    buffer levels correspond to underlay frame buffers.
                    The default value is zero.
                </para>
                <para>
                    Most imlementations do not support overlay or
                    underlay planes (buffer levels other than zero).
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_LUMINANCE_SIZE</constant></term>
                <listitem>
                <para>
                    Must be followed by a nonnegative integer that
                    indicates the desired size of the luminance
                    component of the color buffer, in bits. If this
                    value is zero, color buffers with the smallest
                    luminance component size are preferred. Otherwise,
                    color buffers with the largest luminance component
                    of at least the specified size are preferred. The
                    default value is zero.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_MATCH_NATIVE_PIXMAP</constant></term>
                <listitem>
                <para>
                    Must be followed by the handle of a valid native
                    pixmap, cast to <type>EGLint</type>, or
                    <constant>EGL_NONE</constant>. If the value is not
                    <constant>EGL_NONE</constant>, only configs which
                    support creating pixmap surfaces with this pixmap
                    using
                    <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>
                    will match this attribute. If the value is
                    <constant>EGL_NONE</constant>, then configs are not
                    matched for this attribute. The default value is
                    <constant>EGL_NONE</constant>.
                </para>
                <para>
                    <constant>EGL_MATCH_NATIVE_PIXMAP</constant> was
                    introduced due to the difficulty of determining an
                    <type>EGLConfig</type> compatibile with a native
                    pixmap using only color component sizes.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_NATIVE_RENDERABLE</constant></term>
                <listitem><para>
                    Must be followed by
                    <constant>EGL_DONT_CARE</constant>,
                    <constant>EGL_TRUE</constant>, or
                    <constant>EGL_FALSE</constant>.
                    If <constant>EGL_TRUE</constant> is specified, then
                    only frame buffer configurations that allow native
                    rendering into the surface will be considered. The
                    default value is <constant>EGL_DONT_CARE</constant>.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_MAX_SWAP_INTERVAL</constant></term>
                <listitem><para>
                    Must be followed by a integer that indicates the
                    maximum value that can be passed to
                    <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>.
                    The default value is
                    <constant>EGL_DONT_CARE</constant>.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_MIN_SWAP_INTERVAL</constant></term>
                <listitem><para>
                    Must be followed by a integer that indicates the
                    minimum value that can be passed to eglSwapInterval.
                    The default value is <constant>EGL_DONT_CARE</constant>.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_RED_SIZE</constant></term>
                <listitem><para>
                    Must be followed by a nonnegative integer that
                    indicates the desired size of the red component of
                    the color buffer, in bits. If this value is zero,
                    color buffers with the smallest red component size
                    are preferred. Otherwise, color buffers with the
                    largest red component of at least the specified size
                    are preferred. The default value is zero.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_SAMPLE_BUFFERS</constant></term>
                <listitem><para>
                    Must be followed by the minimum acceptable number of
                    multisample buffers. Configurations with the
                    smallest number of multisample buffers that meet or
                    exceed this minimum number are preferred. Currently
                    operation with more than one multisample buffer is
                    undefined, so only values of zero or one will
                    produce a match. The default value is zero.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_SAMPLES</constant></term>
                <listitem><para>
                    Must be followed by the minimum number of
                    samples required in multisample buffers.
                    Configurations with the smallest number of
                    samples that meet or exceed the specified
                    minimum number are preferred.  Note that it is
                    possible for color samples in the multisample
                    buffer to have fewer bits than colors in the
                    main color buffers.  However, multisampled
                    colors maintain at least as much color
                    resolution in aggregate as the main color
                    buffers.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_STENCIL_SIZE</constant></term>
                <listitem>
                <para>
                    Must be followed by a nonnegative integer that
                    indicates the desired stencil buffer size, in bits.
                    The smallest stencil buffers of at least the
                    specified size are preferred. If the desired size is
                    zero, frame buffer configurations with no stencil
                    buffer are preferred. The default value is zero.
                </para>
                <para>
                    The stencil buffer is used only by OpenGL and
                    OpenGL ES client APIs.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_RENDERABLE_TYPE</constant></term>
                <listitem>
                <para>
                    Must be followed by a bitmask indicating which types
                    of client API contexts the frame buffer
                    configuration must support creating with
                    <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>).
                    Mask bits are the same as for attribute
                    <constant>EGL_CONFORMANT</constant>. The default
                    value is <constant>EGL_OPENGL_ES_BIT</constant>.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_SURFACE_TYPE</constant></term>
                <listitem>
                <para>
                    Must be followed by a bitmask indicating which EGL
                    surface types and capabilities the frame buffer
                    configuration must support. Mask bits include:
                </para>
                <variablelist>
                    <varlistentry>
                        <term><constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant></term>
                        <listitem><para>
                            Config allows specifying box filtered
                            multisample resolve behavior with
                            <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
                        </para></listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><constant>EGL_PBUFFER_BIT</constant></term>
                        <listitem><para>
                            Config supports creating pixel buffer surfaces.
                        </para></listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><constant>EGL_PIXMAP_BIT</constant></term>
                        <listitem><para>
                            Config supports creating pixmap surfaces.
                        </para></listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant></term>
                        <listitem><para>
                            Config allows setting swap behavior for
                            color buffers with
                            <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>.
                        </para></listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant></term>
                        <listitem><para>
                            Config allows specifying OpenVG rendering
                            with premultiplied alpha values at surface
                            creation time (see
                            <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
                            <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
                            and
                            <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>).
                        </para></listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><constant>EGL_VG_COLORSPACE_LINEAR_BIT</constant></term>
                        <listitem><para>
                            Config allows specifying OpenVG rendering in
                            a linear colorspace at surface creation time
                            (see
                            <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
                            <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
                            and
                            <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>).
                        </para></listitem>
                    </varlistentry>
                    <varlistentry>
                        <term><constant>EGL_WINDOW_BIT</constant></term>
                        <listitem><para>
                            Config supports creating window surfaces.
                        </para></listitem>
                    </varlistentry>
                </variablelist>
                <para>
                    For example, if the bitmask is set to
                    <inlineequation>
                        <mml:math>
                            <mml:mi><constant>EGL_WINDOW_BIT</constant></mml:mi>
                            <mml:mo>|</mml:mo>
                            <mml:mi><constant>EGL_PIXMAP_BIT</constant></mml:mi>
                        </mml:math>
                    </inlineequation>,
                    only frame buffer configurations that support both
                    windows and pixmaps will be considered. The default
                    value is <constant>EGL_WINDOW_BIT</constant>.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_TRANSPARENT_TYPE</constant></term>
                <listitem><para>
                    Must be followed by one of
                    <constant>EGL_NONE</constant> or
                    <constant>EGL_TRANSPARENT_RGB</constant>. If
                    <constant>EGL_NONE</constant> is specified, then
                    only opaque frame buffer configurations will be
                    considered. If
                    <constant>EGL_TRANSPARENT_RGB</constant> is
                    specified, then only transparent frame buffer
                    configurations will be considered. The default value
                    is <constant>EGL_NONE</constant>.
                </para>
                <para>
                    Most implementations support only opaque frame
                    buffer configurations.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_TRANSPARENT_RED_VALUE</constant></term>
                <listitem><para>
                    Must be followed by an integer value indicating the
                    transparent red value. The value must be between
                    zero and the maximum color buffer value for red.
                    Only frame buffer configurations that use the
                    specified transparent red value will be considered.
                    The default value is
                    <constant>EGL_DONT_CARE</constant>.
                </para>
                <para>
                    This attribute is ignored unless
                    <constant>EGL_TRANSPARENT_TYPE</constant> is included in
                    <parameter>attrib_list</parameter> and specified as
                    <constant>EGL_TRANSPARENT_RGB</constant>.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_TRANSPARENT_GREEN_VALUE</constant></term>
                <listitem><para>
                    Must be followed by an integer value indicating the
                    transparent green value. The value must be between
                    zero and the maximum color buffer value for green.
                    Only frame buffer configurations that use the
                    specified transparent green value will be
                    considered. The default value is
                    <constant>EGL_DONT_CARE</constant>.
                </para>
                <para>
                    This attribute is ignored unless
                    <constant>EGL_TRANSPARENT_TYPE</constant> is included in
                    <parameter>attrib_list</parameter> and specified as
                    <constant>EGL_TRANSPARENT_RGB</constant>.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_TRANSPARENT_BLUE_VALUE</constant></term>
                <listitem><para>
                    Must be followed by an integer value indicating the
                    transparent blue value. The value must be between
                    zero and the maximum color buffer value for blue.
                    Only frame buffer configurations that use the
                    specified transparent blue value will be considered.
                    The default value is
                    <constant>EGL_DONT_CARE</constant>.
                </para>
                <para>
                    This attribute is ignored unless
                    <constant>EGL_TRANSPARENT_TYPE</constant> is included in
                    <parameter>attrib_list</parameter> and specified as
                    <constant>EGL_TRANSPARENT_RGB</constant>.
                </para></listitem>
            </varlistentry>
        </variablelist>
        <para>
            When more than one EGL frame buffer configuration matches
            the specified attributes, a list of matching configurations
            is returned. The list is sorted according to the following
            precedence rules, which are applied in ascending order
            (i.e., configurations that are considered equal by a lower
            numbered rule are sorted by the higher numbered rule):
        </para>
        <orderedlist>
            <listitem><para>
                Special: by <constant>EGL_CONFIG_CAVEAT</constant>,
                where the precedence is <constant>EGL_NONE</constant>,
                <constant>EGL_SLOW_CONFIG</constant>, and
                <constant>EGL_NON_CONFORMANT_CONFIG</constant>.
            </para></listitem>
            <listitem><para>
                Special: by <constant>EGL_COLOR_BUFFER_TYPE</constant>,
                where the precedence is
                <constant>EGL_RGB_BUFFER</constant>,
                <constant>EGL_LUMINANCE_BUFFER</constant>.
            </para></listitem>
            <listitem>
            <para>
                Special: by larger total number of color bits (for an
                RGB color buffer, this is the sum of
                <constant>EGL_RED_SIZE</constant>,
                <constant>EGL_GREEN_SIZE</constant>,
                <constant>EGL_BLUE_SIZE</constant>, and
                <constant>EGL_ALPHA_SIZE</constant>; for a luminance
                color buffer, the sum of
                <constant>EGL_LUMINANCE_SIZE</constant> and
                <constant>EGL_ALPHA_SIZE</constant>). If the requested
                number of bits in <parameter>attrib_list</parameter> is
                <constant>0</constant> or
                <constant>EGL_DONT_CARE</constant> for a particular
                color component, then the number of bits for that
                component is not considered.
            </para>
            <para>
                This sort rule places configs with deeper color buffers
                before configs with shallower color buffers, which may
                be counterintuitive.
            </para>
            </listitem>
            <listitem><para>
                Smaller <constant>EGL_BUFFER_SIZE</constant>.
            </para></listitem>
            <listitem><para>
                Smaller <constant>EGL_SAMPLE_BUFFERS</constant>.
            </para></listitem>
            <listitem><para>
                Smaller <constant>EGL_SAMPLES</constant>.
            </para></listitem>
            <listitem><para>
                Smaller <constant>EGL_DEPTH_SIZE</constant>.
            </para></listitem>
            <listitem><para>
                Smaller <constant>EGL_STENCIL_SIZE</constant>.
            </para></listitem>
            <listitem><para>
                Smaller <constant>EGL_ALPHA_MASK_SIZE</constant>.
            </para></listitem>
            <listitem><para>
                Special: <constant>EGL_NATIVE_VISUAL_TYPE</constant>
                (the actual sort order is implementation-defined,
                depending on the meaning of native visual types).
            </para></listitem>
            <listitem><para>
                Smaller <constant>EGL_CONFIG_ID</constant> (this is
                always the last sorting rule, and guarantees a unique
                ordering).
            </para></listitem>
        </orderedlist>
        <para>
            <type>EGLConfigs</type> are not sorted with respect to the
            attributes <constant>EGL_BIND_TO_TEXTURE_RGB</constant>,
            <constant>EGL_BIND_TO_TEXTURE_RGBA</constant>,
            <constant>EGL_CONFORMANT</constant>,
            <constant>EGL_LEVEL</constant>,
            <constant>EGL_NATIVE_RENDERABLE</constant>,
            <constant>EGL_MAX_SWAP_INTERVAL</constant>,
            <constant>EGL_MIN_SWAP_INTERVAL</constant>,
            <constant>EGL_RENDERABLE_TYPE</constant>,
            <constant>EGL_SURFACE_TYPE</constant>,
            <constant>EGL_TRANSPARENT_TYPE</constant>,
            <constant>EGL_TRANSPARENT_RED_VALUE</constant>,
            <constant>EGL_TRANSPARENT_GREEN_VALUE</constant>, and
            <constant>EGL_TRANSPARENT_BLUE_VALUE</constant>.
        </para>
    </refsect1>
    <refsect1 id="examples"><title>Examples</title>
        <para>
            The following example specifies a frame buffer configuration
            in the normal frame buffer (not an overlay or underlay). The
            returned frame buffer configuration supports a color buffer
            with at least 4 bits each of red, green and blue, and
            possibly no alpha bits. The code shown in the example may or
            may not have a depth buffer, or a stencil buffer.
        </para>
        <programlisting>EGLint const attrib_list[] = {
        EGL_RED_SIZE, 4,
        EGL_GREEN_SIZE, 4,
        EGL_BLUE_SIZE, 4,
        EGL_NONE
};</programlisting>
    </refsect1>
    <refsect1 id="notes"><title>Notes</title>
        <para>
            <constant>EGL_RENDERABLE_TYPE</constant> bit
            <constant>EGL_OPENGL_BIT</constant>, and
            <constant>EGL_SURFACE_TYPE</constant> bits
            <constant>EGL_MULTISAMPLE_RESOLVE_BOX_BIT</constant> and
            <constant>EGL_SWAP_BEHAVIOR_PRESERVED_BIT</constant> are
            supported only if the EGL version is 1.4 or greater.
        </para>
        <para>
            <constant>EGL_CONFORMANT</constant>,
            <constant>EGL_MATCH_NATIVE_PIXMAP</constant>,
            <constant>EGL_RENDERABLE_TYPE</constant> bit
            <constant>EGL_OPENGL_ES2_BIT</constant>, and
            <constant>EGL_SURFACE_TYPE</constant> bits
            <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> and
            <constant>EGL_VG_COLORSPACE_LINEAR_BIT</constant> are
            supported only if the EGL version is 1.3 or greater.
        </para>
        <para>
            <constant>EGL_ALPHA_MASK_SIZE</constant>,
            <constant>EGL_COLOR_BUFFER_TYPE</constant>,
            <constant>EGL_LUMINANCE_SIZE</constant>,
            <constant>EGL_RENDERABLE_TYPE</constant>, and
            <constant>EGL_RENDERABLE_TYPE</constant> bits
            <constant>EGL_OPENGL_ES_BIT</constant> and
            <constant>EGL_OPENVG_BIT</constant> are supported only if
            the EGL version is 1.2 or greater.
        </para>
        <para>
            If OpenGL or OpenGL ES rendering is supported for a
            luminance color buffer, it is treated as RGB rendering with
            the value of <constant>GL_RED_BITS</constant> equal to
            <constant>EGL_LUMINANCE_SIZE</constant> and the values of
            <constant>GL_GREEN_BITS</constant> and
            <constant>GL_BLUE_BITS</constant> equal to zero. The red
            component of fragments is written to the luminance channel
            of the color buffer while the green and blue components are
            discarded.
        </para>
        <para>
            <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
            and
            <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
            can be used to implement selection algorithms other than the
            generic one implemented by
            <function>eglChooseConfig</function>. Call
            <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>
            to retrieve all the frame buffer configurations, or
            alternatively, all the frame buffer configurations with a
            particular set of attributes. Next call
            <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>
            to retrieve additional attributes for the frame buffer
            configurations and then select between them.
        </para>
        <para>
            EGL implementors are strongly discouraged, but not
            proscribed, from changing the selection algorithm used by
            <function>eglChooseConfig</function>. Therefore, selections
            may change from release to release of the client-side
            library.
        </para>
    </refsect1>
    <refsect1 id="errors"><title>Errors</title>
        <para>
            <constant>EGL_FALSE</constant> is returned on failure,
            <constant>EGL_TRUE</constant> otherwise.
            <parameter>configs</parameter> and
            <parameter>num_config</parameter> are not modified when
            <constant>EGL_FALSE</constant> is returned.
        </para>
        <para>
            <constant>EGL_BAD_DISPLAY</constant> is generated if
            <parameter>display</parameter> is not an EGL display connection.
        </para>
        <para>
            <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
            <parameter>attribute_list</parameter> contains an invalid frame buffer
            configuration attribute or an
            attribute value that is unrecognized or out of range.
        </para>
        <para>
            <constant>EGL_NOT_INITIALIZED</constant> is generated if
            <parameter>display</parameter> has not been initialized.
        </para>
        <para>
            <constant>EGL_BAD_PARAMETER</constant> is generated if
            <parameter>num_config</parameter> is <constant>NULL</constant>.
        </para>
    </refsect1>
    <refsect1 id="seealso"><title>See Also</title>
        <para>
            <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglGetConfigAttrib</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglSurfaceAttrib</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglSwapInterval</refentrytitle></citerefentry>
        </para>
    </refsect1>
    <refsect3 id="Copyright"><title></title>
        <!-- Content included from copyright.inc.xsl -->
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
        <para />
    </refsect3>
</refentry>
