<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title xmlns:xlink="http://www.w3.org/1999/xlink">eglChooseConfig - EGL Reference Pages</title>
    <link rel="stylesheet" type="text/css" href="khronos-man.css"/>
    <meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
  </head>
  <body>
    <header/>
    <div class="refentry" id="eglChooseConfig">
      <div class="titlepage"/>
      <div class="refnamediv">
        <h2>Name</h2>
        <p>eglChooseConfig — 
            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 style="border: 0; cellspacing: 0; cellpadding: 0;" class="funcprototype-table">
            <tr>
              <td>
                <code class="funcdef">EGLBoolean <strong class="fsfunc">eglChooseConfig</strong>(</code>
              </td>
              <td>EGLDisplay <var class="pdparam">display</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLint const * <var class="pdparam">attrib_list</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLConfig * <var class="pdparam">configs</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLint <var class="pdparam">config_size</var>, </td>
            </tr>
            <tr>
              <td> </td>
              <td>EGLint * <var class="pdparam">num_config</var><code>)</code>;</td>
            </tr>
          </table>
          <div class="funcprototype-spacer"> </div>
        </div>
      </div>
      <div class="refsect1" id="parameters">
        <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" id="description">
        <h2>Description</h2>
        <p>
            <code class="function">eglChooseConfig</code> returns in
            <em class="parameter"><code>configs</code></em> a list of all
            <abbr class="acronym">EGL</abbr> 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
            <abbr class="acronym">EGL</abbr> function that requires an
            <abbr class="acronym">EGL</abbr> 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 OpenVG.
                </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 platforms do not support buffer levels other than
                    zero. The behavior of windows placed in overlay and
                    underlay planes depends on the underlying platform.
                </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.xhtml"><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.xhtml"><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.xhtml"><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.xhtml"><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.xhtml"><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.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
                            <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
                            and
                            <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><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.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
                            <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
                            and
                            <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><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
                    <code class="constant">EGL_WINDOW_BIT</code> |
                    <code class="constant">EGL_PIXMAP_BIT</code>,
                    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" id="examples">
        <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" id="notes">
        <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.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>
            and
            <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><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.xhtml"><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.xhtml"><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" id="errors">
        <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" id="seealso">
        <h2>See Also</h2>
        <p>
            <a class="citerefentry" href="eglCreateContext.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateContext</span></span></a>,
            <a class="citerefentry" href="eglCreatePbufferSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePbufferSurface</span></span></a>,
            <a class="citerefentry" href="eglCreatePixmapSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreatePixmapSurface</span></span></a>,
            <a class="citerefentry" href="eglCreateWindowSurface.xhtml"><span class="citerefentry"><span class="refentrytitle">eglCreateWindowSurface</span></span></a>,
            <a class="citerefentry" href="eglGetConfigs.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigs</span></span></a>,
            <a class="citerefentry" href="eglGetConfigAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglGetConfigAttrib</span></span></a>,
            <a class="citerefentry" href="eglSurfaceAttrib.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSurfaceAttrib</span></span></a>,
            <a class="citerefentry" href="eglSwapInterval.xhtml"><span class="citerefentry"><span class="refentrytitle">eglSwapInterval</span></span></a>
        </p>
      </div>
      <p>
    </p>
      <div class="refsect3" id="copyright">
        <img src="KhronosLogo.jpg"/>
        <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.
        </p>
      </div>
      <p>
</p>
    </div>
    <footer/>
  </body>
</html>
