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