<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglCreatePlatformPixmapSurface">
    <info>
         <copyright>
             <year>2003-2018</year>
             <holder>The Khronos Group Inc.</holder>
         </copyright>
    </info>
    <refmeta>
        <refentrytitle>eglCreatePlatformPixmapSurface</refentrytitle>
        <manvolnum>3G</manvolnum>
    </refmeta>
    <refnamediv>
        <refname>eglCreatePlatformPixmapSurface</refname>
        <refpurpose>
            create a new <acronym>EGL</acronym> offscreen surface
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>C Specification</title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>EGLSurface <function>eglCreatePlatformPixmapSurface</function></funcdef>
                <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
                <paramdef>EGLConfig <parameter>config</parameter></paramdef>
                <paramdef>void * <parameter>native_pixmap</parameter></paramdef>
                <paramdef>EGLint const * <parameter>attrib_list</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>config</parameter></term>
                <listitem><para>
                    Specifies the EGL frame buffer configuration that defines the
                    frame buffer resource available to the surface.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><parameter>native_pixmap</parameter></term>
                <listitem><para>Specifies the native pixmap.</para></listitem>
            </varlistentry>
            <varlistentry>
                <term><parameter>attrib_list</parameter></term>
                <listitem><para>
                    Specifies pixmap surface attributes.
                    May be <constant>NULL</constant> or empty
                    (first attribute is <constant>EGL_NONE</constant>).
                </para></listitem>
            </varlistentry>
        </variablelist>
    </refsect1>
    <refsect1 xml:id="description"><title>Description</title>
        <para>
            <function>eglCreatePlatformPixmapSurface</function> creates an
            off-screen <acronym>EGL</acronym> pixmap surface and returns
            a handle to it.
        </para>
        <para>
            If <function>eglCreatePlatformPixmapSurface</function> fails to
            create a pixmap surface, <constant>EGL_NO_SURFACE</constant> is
            returned.
        </para>
        <para>
            <parameter>native_pixmap</parameter> must belong to the same
            platform as <parameter>display</parameter>, and EGL considers
            the returned <type>EGLSurface</type> as belonging to that same
            platform. The EGL extension that defines the platform to which
            <parameter>display</parameter> belongs also defines the
            requirements for the <parameter>native_pixmap</parameter>
            parameter.
        </para>
        <para>
            Surface attributes are specified as a list of
            attribute-value pairs, terminated with
            <constant>EGL_NONE</constant>. Accepted attributes
            are:
        </para>
        <variablelist>
            <varlistentry>
                <term><constant>EGL_GL_COLORSPACE</constant></term>
                <listitem>
                <para>
                    Specifies the color space used by OpenGL and OpenGL ES
                    when rendering to the surface. If its value is
                    <constant>EGL_GL_COLORSPACE_SRGB</constant>, then a
                    non-linear, perceptually uniform color space is assumed,
                    with a corresponding
                    <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
                    value of <constant>GL_SRGB</constant>. If its value is
                    <constant>EGL_GL_COLORSPACE_LINEAR</constant>, then a
                    linear color space is assumed, with a corresponding
                    <constant>GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING</constant>
                    value of <constant>GL_LINEAR</constant>. The default
                    value of <constant>EGL_GL_COLORSPACE</constant> is
                    <constant>EGL_GL_COLORSPACE_SRGB</constant>.
                </para>
                <para>
                    Note that the <constant>EGL_GL_COLORSPACE</constant>
                    attribute is used only by OpenGL and OpenGL ES contexts
                    supporting sRGB framebuffers. EGL itself does not
                    distinguish multiple colorspace models. Refer to the
                    ``sRGB Conversion'' sections of the OpenGL 4.6 and
                    OpenGL ES 3.2 Specifications for more information.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_VG_ALPHA_FORMAT</constant></term>
                <listitem>
                <para>
                    Specifies how alpha values are interpreted by OpenVG
                    when rendering to the surface. If its value is
                    <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>,
                    then alpha values are not premultipled. If its value
                    is <constant>EGL_VG_ALPHA_FORMAT_PRE</constant>,
                    then alpha values are premultiplied. The default
                    value of <constant>EGL_VG_ALPHA_FORMAT</constant> is
                    <constant>EGL_VG_ALPHA_FORMAT_NONPRE</constant>.
                </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>EGL_VG_COLORSPACE</constant></term>
                <listitem>
                <para>
                    Specifies the color space used by OpenVG when
                    rendering to the surface. If its value is
                    <constant>EGL_VG_COLORSPACE_sRGB</constant>, then a
                    non-linear, perceptually uniform color space is
                    assumed, with a corresponding
                    <type>VGImageFormat</type> of form
                    <constant>VG_s*</constant>. If its value is
                    <constant>EGL_VG_COLORSPACE_LINEAR</constant>, then
                    a linear color space is assumed, with a
                    corresponding <type>VGImageFormat</type> of form
                    <constant>VG_l*</constant>. The default value of
                    <constant>EGL_VG_COLORSPACE</constant> is
                    <constant>EGL_VG_COLORSPACE_sRGB</constant>.
                </para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>
            Any EGL rendering context that was created with respect to
            <parameter>config</parameter> can be used to render into the
            surface. Use
            <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>
            to attach an EGL rendering context to the surface.
        </para>
        <para>
            Use
            <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
            to retrieve the ID of <parameter>config</parameter>.
        </para>
        <para>
            Use <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>
            to destroy the surface.
        </para>
    </refsect1>
    <refsect1 xml:id="notes"><title>Notes</title>
        <para>
            The <constant>EGL_MATCH_NATIVE_PIXMAP</constant> attribute
            of
            <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>
            can be used to select a frame buffer configuration matching
            a specified native pixmap.
        </para>
        <para>
            Attribute <constant>EGL_GL_COLORSPACE</constant> is supported
            only if the EGL version is 1.5 or greater.
        </para>
        <para>
            Attributes
            <constant>EGL_VG_ALPHA_FORMAT</constant> and
            <constant>EGL_VG_COLORSPACE</constant>, and the
            corresponding attribute values, are supported only if the
            EGL version is 1.2 or greater.
        </para>
        <!-- Might want to mention aliasing of EGL_VG_* -> EGL_* that occurred in EGL 1.3 -->
        <para>
            The <constant>EGL_VG_ALPHA_FORMAT</constant> and
            <constant>EGL_VG_COLORSPACE</constant> attributes are used only
            by OpenVG and EGL itself. Refer to section 11.2 of the OpenVG
            1.0 specification for more information. The platform's use and
            interpretation of alpha values is outside the scope of EGL.
            However, the preferred behavior is for the window system to
            ignore the value of <constant>EGL_VG_ALPHA_FORMAT</constant>.
        </para>
    </refsect1>
    <refsect1 xml:id="errors"><title>Errors</title>
        <para>
            If <parameter>display</parameter> and
            <parameter>native_pixmap</parameter> do not belong to the same
            platform, then undefined behavior occurs.
        </para>
        <para>
            <constant>EGL_NO_SURFACE</constant> is returned if creation of
            the surface fails.
        </para>
        <para>
            <constant>EGL_BAD_DISPLAY</constant> is generated if
            <parameter>display</parameter> is not an EGL display connection.
        </para>
        <para>
            <constant>EGL_NOT_INITIALIZED</constant> is generated if
            <parameter>display</parameter> has not been initialized.
        </para>
        <para>
            <constant>EGL_BAD_CONFIG</constant> is generated if
            <parameter>config</parameter> is not an EGL config.
        </para>
        <para>
            <constant>EGL_BAD_NATIVE_PIXMAP</constant> may be generated if
            <parameter>native_pixmap</parameter> is not a valid native pixmap.
        </para>
        <para>
            <constant>EGL_BAD_ATTRIBUTE</constant> is generated if
            <parameter>attrib_list</parameter> contains an invalid pixmap attribute
            or if an attribute value is not recognized or out of range.
        </para>
        <para>
            <constant>EGL_BAD_ALLOC</constant> is generated if there is
            already an <type>EGLSurface</type> associated with
            <parameter>native_pixmap</parameter> (as a result of a previous
            <function>eglCreatePlatformPixmapSurface</function> call).
        </para>
        <para>
            <constant>EGL_BAD_ALLOC</constant> is generated if the
            implementation cannot allocate resources for the new EGL window.
        </para>
        <para>
            <constant>EGL_BAD_MATCH</constant> is generated if the attributes of
            <parameter>native_pixmap</parameter> do not correspond to
            <parameter>config</parameter> or if
            <parameter>config</parameter> does not support rendering to pixmaps
            (the <constant>EGL_SURFACE_TYPE</constant> attribute does not contain
            <constant>EGL_PIXMAP_BIT</constant>).
        </para>
        <para>
            <constant>EGL_BAD_MATCH</constant> is generated if
            <parameter>config</parameter> does not support the specified
            OpenVG alpha format attribute (the value of
            <constant>EGL_VG_ALPHA_FORMAT</constant> is
            <constant>EGL_VG_ALPHA_FORMAT_PRE</constant> and the
            <constant>EGL_VG_ALPHA_FORMAT_PRE_BIT</constant> is not set
            in the <constant>EGL_SURFACE_TYPE</constant> attribute of
            <parameter>config</parameter>) or colorspace attribute (the
            value of <constant>EGL_VG_COLORSPACE</constant> is
            <constant>EGL_VG_COLORSPACE_LINEAR</constant> and the
            <constant>EGL_VG_COLORSPACE_LINEAR_IT</constant> is not set
            in the <constant>EGL_SURFACE_TYPE</constant> attribute of
            <parameter>config</parameter>).
        </para>
    </refsect1>
    <refsect1 xml:id="seealso"><title>See Also</title>
        <para>
            <citerefentry><refentrytitle>eglDestroySurface</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglChooseConfig</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglGetConfigs</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglMakeCurrent</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglQuerySurface</refentrytitle></citerefentry>
        </para>
    </refsect1>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
</refentry>
