<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0; 
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }
                
                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }       
                
                .type {
                        font: normal 16px verdana, sans-serif !important;
                }                       
                
                .parameter { 
                        font-style: italic; 
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }
                
                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }
                
        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }
                
        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }
                
        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }
                
        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }
                
                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }
                

        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }
                                        
</style>
    <title>eglChooseConfig</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
  </head>
  <body>
    <div class="refentry">
      <a id="eglChooseConfig"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <h1>eglChooseConfig</h1>
        <p>
            return a list of EGL frame buffer configurations that match specified attributes
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2>C Specification</h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">EGLBoolean <strong class="fsfunc">eglChooseConfig</strong>(</code>
                <td>EGLDisplay  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">display</var>, </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>EGLint const *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">attrib_list</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>EGLConfig *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">configs</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>EGLint  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">config_size</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>EGLint *  <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_config</var><code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>display</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>Specifies the EGL display connection.</p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>attrib_list</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>Specifies attributes required to match by configs.</p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>configs</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>Returns an array of frame buffer configurations.</p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>config_size</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>Specifies the size of the array of frame buffer configurations.</p>
            </dd>
            <dt>
              <span class="term">
                <em class="parameter">
                  <code>num_config</code>
                </em>
              </span>
            </dt>
            <dd>
              <p>Returns the number of frame buffer configurations returned.</p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Description</h2>
        <p>
            <code class="function">eglChooseConfig</code> returns in
            <em class="parameter"><code>configs</code></em> a list of all
            <acronym class="acronym">EGL</acronym> frame buffer configurations that
            match the attributes specified in
            <em class="parameter"><code>attrib_list</code></em>. The returned
            <span class="type">EGLConfig</span>s can be used in any
            <acronym class="acronym">EGL</acronym> function that requires an
            <acronym class="acronym">EGL</acronym> frame buffer configuration.
        </p>
        <p>
            If <em class="parameter"><code>configs</code></em> is not
            <code class="constant">NULL</code>, up to
            <em class="parameter"><code>config_size</code></em> configs will be returned
            in the array pointed to by <em class="parameter"><code>configs</code></em>.
            The number of configs actually returned will be returned in
            *<em class="parameter"><code>num_config</code></em>.
        </p>
        <p>
            If <em class="parameter"><code>configs</code></em> is
            <code class="constant">NULL</code>, no configs will be returned in
            <em class="parameter"><code>configs</code></em>. Instead, the total number of
            configs matching <em class="parameter"><code>attrib_list</code></em> will be
            returned in *<em class="parameter"><code>num_config</code></em>. In this case
            <em class="parameter"><code>config_size</code></em> is ignored. This form of
            <code class="function">eglChooseConfig</code> is used to determine
            the number of matching frame buffer configurations, followed
            by allocating an array of <span class="type">EGLConfig</span> to pass
            into another call to <code class="function">eglChooseConfig</code>
            with all other parameters unchanged.
        </p>
        <p>
            All attributes in <em class="parameter"><code>attrib_list</code></em>,
            including boolean attributes, are immediately followed by
            the corresponding desired value. The list is terminated with
            <code class="constant">EGL_NONE</code>. If an attribute is not
            specified in <em class="parameter"><code>attrib_list</code></em> then the
            default value (see below) is used (and the attribute is said
            to be specified implicitly). For example, if
            <code class="constant">EGL_DEPTH_SIZE</code> is not specified then it
            is assumed to be zero. For some attributes, the default is
            <code class="constant">EGL_DONT_CARE</code> meaning that any value is
            OK for this attribute, so the attribute will not be checked.
        </p>
        <p>
            Attributes are matched in an attribute-specific manner. Some
            of the attributes, such as <code class="constant">EGL_LEVEL</code>,
            must match the specified value exactly. Others, such as,
            <code class="constant">EGL_RED_SIZE</code> 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.
        </p>
        <p>
            For the bitmask attributes
            <code class="constant">EGL_CONFORMANT</code>,
            <code class="constant">EGL_RENDERABLE_TYPE</code>, and
            <code class="constant">EGL_SURFACE_TYPE</code>, 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.
        </p>
        <p>
            Attributes which may appear in
            <em class="parameter"><code>attrib_list</code></em>, and their descriptions
            and allowed values, are:
        </p>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term">
                <code class="constant">EGL_ALPHA_MASK_SIZE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
              <p>
                    The alpha mask buffer is used only by OpenGL and
                    OpenGL ES client APIs.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_ALPHA_SIZE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by
                    <code class="constant">EGL_DONT_CARE</code>,
                    <code class="constant">EGL_TRUE</code>, or
                    <code class="constant">EGL_FALSE</code>.
                    If <code class="constant">EGL_TRUE</code> 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 <code class="constant">EGL_DONT_CARE</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by one of
                    <code class="constant">EGL_DONT_CARE</code>,
                    <code class="constant">EGL_TRUE</code>, or
                    <code class="constant">EGL_FALSE</code>.
                    If <code class="constant">EGL_TRUE</code> 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
                    <code class="constant">EGL_DONT_CARE</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_BLUE_SIZE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_BUFFER_SIZE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
              <p>
                    The color buffer size is the sum of
                    <code class="constant">EGL_RED_SIZE</code>,
                    <code class="constant">EGL_GREEN_SIZE</code>,
                    <code class="constant">EGL_BLUE_SIZE</code>, and
                    <code class="constant">EGL_ALPHA_SIZE</code>, 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.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_COLOR_BUFFER_TYPE</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by one of
                    <code class="constant">EGL_RGB_BUFFER</code> or
                    <code class="constant">EGL_LUMINANCE_BUFFER</code>.
                </p>
              <p>
                    <code class="constant">EGL_RGB_BUFFER</code> indicates
                    an RGB color buffer; in this case,
                    attributes <code class="constant">EGL_RED_SIZE</code>,
                    <code class="constant">EGL_GREEN_SIZE</code> and
                    <code class="constant">EGL_BLUE_SIZE</code> must be non-zero, and
                    <code class="constant">EGL_LUMINANCE_SIZE</code> must be zero.
                </p>
              <p>
                    <code class="constant">EGL_LUMINANCE_BUFFER</code> indicates a luminance color
                    buffer. In this case <code class="constant">EGL_RED_SIZE</code>,
                    <code class="constant">EGL_GREEN_SIZE</code>,
                    <code class="constant">EGL_BLUE_SIZE</code> must be zero, and
                    <code class="constant">EGL_LUMINANCE_SIZE</code> must be non-zero.
                </p>
              <p>
                    For both RGB and luminance color buffers,
                    <code class="constant">EGL_ALPHA_SIZE</code> may be zero or
                    non-zero.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_CONFIG_CAVEAT</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by
                    <code class="constant">EGL_DONT_CARE</code>,
                    <code class="constant">EGL_NONE</code>,
                    <code class="constant">EGL_SLOW_CONFIG</code>, or
                    <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>.
                </p>
              <p>
                    If <code class="constant">EGL_DONT_CARE</code> is specified,
                    then configs are not matched for this attribute. The
                    default value is <code class="constant">EGL_DONT_CARE</code>.
                </p>
              <p>
                    If <code class="constant">EGL_NONE</code> is specified, then
                    configs are matched for this attribute, but only
                    configs with no caveats (neither
                    <code class="constant">EGL_SLOW_CONFIG</code> or
                    <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>) will
                    be considered.
                </p>
              <p>
                    If <code class="constant">EGL_SLOW_CONFIG</code> 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.
                </p>
              <p>
                    If <code class="constant">EGL_NON_CONFORMANT_CONFIG</code> is
                    specified, then only configs supporting
                    non-conformant OpenGL ES contexts will be
                    considered.
                </p>
              <p>
                    If the EGL version is 1.3 or later, caveat
                    <code class="constant">EGL_NON_CONFORMANT_CONFIG</code> is
                    obsolete, since the same information can be
                    specified via the
                    <code class="constant">EGL_CONFORMANT</code> attribute on a
                    per-client-API basis, not just for OpenGL ES.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_CONFIG_ID</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by a valid integer ID that
                    indicates the desired EGL frame buffer
                    configuration. When a
                    <code class="constant">EGL_CONFIG_ID</code> is specified, all
                    other attributes are ignored. The default value is
                    <code class="constant">EGL_DONT_CARE</code>.
                </p>
              <p>
                    The meaning of config IDs is
                    implementation-dependent. They are used only to
                    uniquely identify different frame buffer
                    configurations.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_CONFORMANT</code>
              </span>
            </dt>
            <dd>
              <p>
                    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:
                </p>
              <div class="variablelist">
                <dl class="variablelist">
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_OPENGL_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config supports creating OpenGL contexts.
                        </p>
                  </dd>
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_OPENGL_ES_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config supports creating OpenGL ES 1.0
                            and/or 1.1 contexts.
                        </p>
                  </dd>
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_OPENGL_ES2_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config supports creating OpenGL ES 2.0 contexts.
                        </p>
                  </dd>
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_OPENVG_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config supports creating OpenVG contexts.
                        </p>
                  </dd>
                </dl>
              </div>
              <p>
                    For example, if the bitmask is set to
                    <code class="constant">EGL_OPENGL_ES_BIT</code>, only frame
                    buffer configurations that support creating
                    conformant OpenGL ES contexts will match. The
                    default value is zero.
                </p>
              <p>
                    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.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_DEPTH_SIZE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
              <p>
                    The depth buffer is used only by OpenGL and OpenGL
                    ES client APIs.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_GREEN_SIZE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_LEVEL</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
              <p>
                    Most imlementations do not support overlay or
                    underlay planes (buffer levels other than zero).
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_LUMINANCE_SIZE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by the handle of a valid native
                    pixmap, cast to <span class="type">EGLint</span>, or
                    <code class="constant">EGL_NONE</code>. If the value is not
                    <code class="constant">EGL_NONE</code>, only configs which
                    support creating pixmap surfaces with this pixmap
                    using
                    <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>
                    will match this attribute. If the value is
                    <code class="constant">EGL_NONE</code>, then configs are not
                    matched for this attribute. The default value is
                    <code class="constant">EGL_NONE</code>.
                </p>
              <p>
                    <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code> was
                    introduced due to the difficulty of determining an
                    <span class="type">EGLConfig</span> compatibile with a native
                    pixmap using only color component sizes.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_NATIVE_RENDERABLE</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by
                    <code class="constant">EGL_DONT_CARE</code>,
                    <code class="constant">EGL_TRUE</code>, or
                    <code class="constant">EGL_FALSE</code>.
                    If <code class="constant">EGL_TRUE</code> is specified, then
                    only frame buffer configurations that allow native
                    rendering into the surface will be considered. The
                    default value is <code class="constant">EGL_DONT_CARE</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_MAX_SWAP_INTERVAL</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by a integer that indicates the
                    maximum value that can be passed to
                    <a class="citerefentry" href="eglSwapInterval.html"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>.
                    The default value is
                    <code class="constant">EGL_DONT_CARE</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_MIN_SWAP_INTERVAL</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by a integer that indicates the
                    minimum value that can be passed to eglSwapInterval.
                    The default value is <code class="constant">EGL_DONT_CARE</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_RED_SIZE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_SAMPLE_BUFFERS</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_SAMPLES</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_STENCIL_SIZE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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.
                </p>
              <p>
                    The stencil buffer is used only by OpenGL and
                    OpenGL ES client APIs.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_RENDERABLE_TYPE</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by a bitmask indicating which types
                    of client API contexts the frame buffer
                    configuration must support creating with
                    <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>).
                    Mask bits are the same as for attribute
                    <code class="constant">EGL_CONFORMANT</code>. The default
                    value is <code class="constant">EGL_OPENGL_ES_BIT</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_SURFACE_TYPE</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by a bitmask indicating which EGL
                    surface types and capabilities the frame buffer
                    configuration must support. Mask bits include:
                </p>
              <div class="variablelist">
                <dl class="variablelist">
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config allows specifying box filtered
                            multisample resolve behavior with
                            <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
                        </p>
                  </dd>
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_PBUFFER_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config supports creating pixel buffer surfaces.
                        </p>
                  </dd>
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_PIXMAP_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config supports creating pixmap surfaces.
                        </p>
                  </dd>
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config allows setting swap behavior for
                            color buffers with
                            <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>.
                        </p>
                  </dd>
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config allows specifying OpenVG rendering
                            with premultiplied alpha values at surface
                            creation time (see
                            <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
                            <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
                            and
                            <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>).
                        </p>
                  </dd>
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_VG_COLORSPACE_LINEAR_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config allows specifying OpenVG rendering in
                            a linear colorspace at surface creation time
                            (see
                            <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
                            <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
                            and
                            <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>).
                        </p>
                  </dd>
                  <dt>
                    <span class="term">
                      <code class="constant">EGL_WINDOW_BIT</code>
                    </span>
                  </dt>
                  <dd>
                    <p>
                            Config supports creating window surfaces.
                        </p>
                  </dd>
                </dl>
              </div>
              <p>
                    For example, if the bitmask is set to
                    <mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" overflow="scroll">
                            <mml:mi><code class="constant">EGL_WINDOW_BIT</code></mml:mi>
                            <mml:mo>|</mml:mo>
                            <mml:mi><code class="constant">EGL_PIXMAP_BIT</code></mml:mi>
                        </mml:math>,
                    only frame buffer configurations that support both
                    windows and pixmaps will be considered. The default
                    value is <code class="constant">EGL_WINDOW_BIT</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_TRANSPARENT_TYPE</code>
              </span>
            </dt>
            <dd>
              <p>
                    Must be followed by one of
                    <code class="constant">EGL_NONE</code> or
                    <code class="constant">EGL_TRANSPARENT_RGB</code>. If
                    <code class="constant">EGL_NONE</code> is specified, then
                    only opaque frame buffer configurations will be
                    considered. If
                    <code class="constant">EGL_TRANSPARENT_RGB</code> is
                    specified, then only transparent frame buffer
                    configurations will be considered. The default value
                    is <code class="constant">EGL_NONE</code>.
                </p>
              <p>
                    Most implementations support only opaque frame
                    buffer configurations.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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
                    <code class="constant">EGL_DONT_CARE</code>.
                </p>
              <p>
                    This attribute is ignored unless
                    <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
                    <em class="parameter"><code>attrib_list</code></em> and specified as
                    <code class="constant">EGL_TRANSPARENT_RGB</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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
                    <code class="constant">EGL_DONT_CARE</code>.
                </p>
              <p>
                    This attribute is ignored unless
                    <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
                    <em class="parameter"><code>attrib_list</code></em> and specified as
                    <code class="constant">EGL_TRANSPARENT_RGB</code>.
                </p>
            </dd>
            <dt>
              <span class="term">
                <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>
              </span>
            </dt>
            <dd>
              <p>
                    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
                    <code class="constant">EGL_DONT_CARE</code>.
                </p>
              <p>
                    This attribute is ignored unless
                    <code class="constant">EGL_TRANSPARENT_TYPE</code> is included in
                    <em class="parameter"><code>attrib_list</code></em> and specified as
                    <code class="constant">EGL_TRANSPARENT_RGB</code>.
                </p>
            </dd>
          </dl>
        </div>
        <p>
            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):
        </p>
        <div class="orderedlist">
          <ol class="orderedlist" type="1">
            <li class="listitem">
              <p>
                Special: by <code class="constant">EGL_CONFIG_CAVEAT</code>,
                where the precedence is <code class="constant">EGL_NONE</code>,
                <code class="constant">EGL_SLOW_CONFIG</code>, and
                <code class="constant">EGL_NON_CONFORMANT_CONFIG</code>.
            </p>
            </li>
            <li class="listitem">
              <p>
                Special: by <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
                where the precedence is
                <code class="constant">EGL_RGB_BUFFER</code>,
                <code class="constant">EGL_LUMINANCE_BUFFER</code>.
            </p>
            </li>
            <li class="listitem">
              <p>
                Special: by larger total number of color bits (for an
                RGB color buffer, this is the sum of
                <code class="constant">EGL_RED_SIZE</code>,
                <code class="constant">EGL_GREEN_SIZE</code>,
                <code class="constant">EGL_BLUE_SIZE</code>, and
                <code class="constant">EGL_ALPHA_SIZE</code>; for a luminance
                color buffer, the sum of
                <code class="constant">EGL_LUMINANCE_SIZE</code> and
                <code class="constant">EGL_ALPHA_SIZE</code>). If the requested
                number of bits in <em class="parameter"><code>attrib_list</code></em> is
                <code class="constant">0</code> or
                <code class="constant">EGL_DONT_CARE</code> for a particular
                color component, then the number of bits for that
                component is not considered.
            </p>
              <p>
                This sort rule places configs with deeper color buffers
                before configs with shallower color buffers, which may
                be counterintuitive.
            </p>
            </li>
            <li class="listitem">
              <p>
                Smaller <code class="constant">EGL_BUFFER_SIZE</code>.
            </p>
            </li>
            <li class="listitem">
              <p>
                Smaller <code class="constant">EGL_SAMPLE_BUFFERS</code>.
            </p>
            </li>
            <li class="listitem">
              <p>
                Smaller <code class="constant">EGL_SAMPLES</code>.
            </p>
            </li>
            <li class="listitem">
              <p>
                Smaller <code class="constant">EGL_DEPTH_SIZE</code>.
            </p>
            </li>
            <li class="listitem">
              <p>
                Smaller <code class="constant">EGL_STENCIL_SIZE</code>.
            </p>
            </li>
            <li class="listitem">
              <p>
                Smaller <code class="constant">EGL_ALPHA_MASK_SIZE</code>.
            </p>
            </li>
            <li class="listitem">
              <p>
                Special: <code class="constant">EGL_NATIVE_VISUAL_TYPE</code>
                (the actual sort order is implementation-defined,
                depending on the meaning of native visual types).
            </p>
            </li>
            <li class="listitem">
              <p>
                Smaller <code class="constant">EGL_CONFIG_ID</code> (this is
                always the last sorting rule, and guarantees a unique
                ordering).
            </p>
            </li>
          </ol>
        </div>
        <p>
            <span class="type">EGLConfigs</span> are not sorted with respect to the
            attributes <code class="constant">EGL_BIND_TO_TEXTURE_RGB</code>,
            <code class="constant">EGL_BIND_TO_TEXTURE_RGBA</code>,
            <code class="constant">EGL_CONFORMANT</code>,
            <code class="constant">EGL_LEVEL</code>,
            <code class="constant">EGL_NATIVE_RENDERABLE</code>,
            <code class="constant">EGL_MAX_SWAP_INTERVAL</code>,
            <code class="constant">EGL_MIN_SWAP_INTERVAL</code>,
            <code class="constant">EGL_RENDERABLE_TYPE</code>,
            <code class="constant">EGL_SURFACE_TYPE</code>,
            <code class="constant">EGL_TRANSPARENT_TYPE</code>,
            <code class="constant">EGL_TRANSPARENT_RED_VALUE</code>,
            <code class="constant">EGL_TRANSPARENT_GREEN_VALUE</code>, and
            <code class="constant">EGL_TRANSPARENT_BLUE_VALUE</code>.
        </p>
      </div>
      <div class="refsect1">
        <a id="examples"></a>
        <h2>Examples</h2>
        <p>
            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.
        </p>
        <pre class="programlisting">EGLint const attrib_list[] = {
        EGL_RED_SIZE, 4,
        EGL_GREEN_SIZE, 4,
        EGL_BLUE_SIZE, 4,
        EGL_NONE
};</pre>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
            <code class="constant">EGL_RENDERABLE_TYPE</code> bit
            <code class="constant">EGL_OPENGL_BIT</code>, and
            <code class="constant">EGL_SURFACE_TYPE</code> bits
            <code class="constant">EGL_MULTISAMPLE_RESOLVE_BOX_BIT</code> and
            <code class="constant">EGL_SWAP_BEHAVIOR_PRESERVED_BIT</code> are
            supported only if the EGL version is 1.4 or greater.
        </p>
        <p>
            <code class="constant">EGL_CONFORMANT</code>,
            <code class="constant">EGL_MATCH_NATIVE_PIXMAP</code>,
            <code class="constant">EGL_RENDERABLE_TYPE</code> bit
            <code class="constant">EGL_OPENGL_ES2_BIT</code>, and
            <code class="constant">EGL_SURFACE_TYPE</code> bits
            <code class="constant">EGL_VG_ALPHA_FORMAT_PRE_BIT</code> and
            <code class="constant">EGL_VG_COLORSPACE_LINEAR_BIT</code> are
            supported only if the EGL version is 1.3 or greater.
        </p>
        <p>
            <code class="constant">EGL_ALPHA_MASK_SIZE</code>,
            <code class="constant">EGL_COLOR_BUFFER_TYPE</code>,
            <code class="constant">EGL_LUMINANCE_SIZE</code>,
            <code class="constant">EGL_RENDERABLE_TYPE</code>, and
            <code class="constant">EGL_RENDERABLE_TYPE</code> bits
            <code class="constant">EGL_OPENGL_ES_BIT</code> and
            <code class="constant">EGL_OPENVG_BIT</code> are supported only if
            the EGL version is 1.2 or greater.
        </p>
        <p>
            If OpenGL or OpenGL ES rendering is supported for a
            luminance color buffer, it is treated as RGB rendering with
            the value of <code class="constant">GL_RED_BITS</code> equal to
            <code class="constant">EGL_LUMINANCE_SIZE</code> and the values of
            <code class="constant">GL_GREEN_BITS</code> and
            <code class="constant">GL_BLUE_BITS</code> 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.
        </p>
        <p>
            <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
            and
            <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
            can be used to implement selection algorithms other than the
            generic one implemented by
            <code class="function">eglChooseConfig</code>. Call
            <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
            to retrieve all the frame buffer configurations, or
            alternatively, all the frame buffer configurations with a
            particular set of attributes. Next call
            <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>
            to retrieve additional attributes for the frame buffer
            configurations and then select between them.
        </p>
        <p>
            EGL implementors are strongly discouraged, but not
            proscribed, from changing the selection algorithm used by
            <code class="function">eglChooseConfig</code>. Therefore, selections
            may change from release to release of the client-side
            library.
        </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
            <code class="constant">EGL_FALSE</code> is returned on failure,
            <code class="constant">EGL_TRUE</code> otherwise.
            <em class="parameter"><code>configs</code></em> and
            <em class="parameter"><code>num_config</code></em> are not modified when
            <code class="constant">EGL_FALSE</code> is returned.
        </p>
        <p>
            <code class="constant">EGL_BAD_DISPLAY</code> is generated if
            <em class="parameter"><code>display</code></em> is not an EGL display connection.
        </p>
        <p>
            <code class="constant">EGL_BAD_ATTRIBUTE</code> is generated if
            <em class="parameter"><code>attribute_list</code></em> contains an invalid frame buffer
            configuration attribute or an
            attribute value that is unrecognized or out of range.
        </p>
        <p>
            <code class="constant">EGL_NOT_INITIALIZED</code> is generated if
            <em class="parameter"><code>display</code></em> has not been initialized.
        </p>
        <p>
            <code class="constant">EGL_BAD_PARAMETER</code> is generated if
            <em class="parameter"><code>num_config</code></em> is <code class="constant">NULL</code>.
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>See Also</h2>
        <p>
            <a class="citerefentry" href="eglCreateContext.html"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
            <a class="citerefentry" href="eglCreatePbufferSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
            <a class="citerefentry" href="eglCreatePixmapSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
            <a class="citerefentry" href="eglCreateWindowSurface.html"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
            <a class="citerefentry" href="eglGetConfigs.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
            <a class="citerefentry" href="eglGetConfigAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>,
            <a class="citerefentry" href="eglSurfaceAttrib.html"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
            <a class="citerefentry" href="eglSwapInterval.html"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>
Copyright © 2003-2014 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.
</div>
    </div>
  </body>
</html>
