<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglChooseConfig">
    <info>
         <copyright>
             <year>2003-2014</year>
             <holder>The Khronos Group Inc.</holder>
         </copyright>
    </info>
    <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 xml: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 xml: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
                    <constant>EGL_WINDOW_BIT</constant> |
                    <constant>EGL_PIXMAP_BIT</constant>,
                    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 xml: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 xml: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 xml: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 xml: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>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
</refentry>
