<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>
            <code class="function">eglCreatePlatformPixmapSurface</code> is supported only if
            the EGL version is 1.5 or greater.
        </para>
        <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>
        <!-- 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>
