<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglMakeCurrent">
    <info>
         <copyright>
             <year>2003-2018</year>
             <holder>The Khronos Group Inc.</holder>
         </copyright>
    </info>
    <refmeta>
        <refentrytitle>eglMakeCurrent</refentrytitle>
        <manvolnum>3G</manvolnum>
    </refmeta>
    <refnamediv>
        <refname>eglMakeCurrent</refname>
        <refpurpose>
            attach an EGL rendering context to EGL surfaces
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>C Specification</title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>EGLBoolean <function>eglMakeCurrent</function></funcdef>
                <paramdef>EGLDisplay <parameter>display</parameter></paramdef>
                <paramdef>EGLSurface <parameter>draw</parameter></paramdef>
                <paramdef>EGLSurface <parameter>read</parameter></paramdef>
                <paramdef>EGLContext <parameter>context</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>
    <refsect1 xml:id="parameters"><title>Parameters</title>
        <variablelist>
            <varlistentry>
                <term><parameter>display</parameter></term>
                <listitem>
                    <para>Specifies the <acronym>EGL</acronym> display connection.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><parameter>draw</parameter></term>
                <listitem>
                    <para>Specifies the <acronym>EGL</acronym> draw surface.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><parameter>read</parameter></term>
                <listitem>
                    <para>Specifies the <acronym>EGL</acronym> read surface.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><parameter>context</parameter></term>
                <listitem>
                    <para>Specifies the <acronym>EGL</acronym> rendering context
                        to be attached to the surfaces.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsect1>
    <refsect1 xml:id="description"><title>Description</title>
        <para>
            <function>eglMakeCurrent</function> binds <parameter>context</parameter>
            to the current rendering thread and to the <parameter>draw</parameter>
            and <parameter>read</parameter> surfaces.
        </para>
        <para>
            For an OpenGL or OpenGL ES context, <parameter>draw</parameter>
            is used for all operations except for any pixel data read back or copied
            (<citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>, and
            <citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>),
            which is taken from the frame buffer values of
            <parameter>read</parameter>. Note that the same
            <type>EGLSurface</type> may be specified for both draw and read.
        </para>
        <para>
            For an OpenVG context, the same <type>EGLSurface</type> must be
            specified for both <parameter>draw</parameter> and
            <parameter>read</parameter>.
        </para>
        <para>
            If the calling thread has already a current rendering context of
            the same client API type as <parameter>context</parameter>, then
            that context is flushed and marked as no longer current.
            <parameter>context</parameter> is then made the current context
            for the calling thread. For purposes of
            <function>eglMakeCurrent</function>, the client API type of all
            OpenGL ES and OpenGL contexts is considered the same. In other
            words, if any OpenGL ES context is currently bound and
            <parameter>context</parameter> is an OpenGL context, or if any
            OpenGL context is currently bound and
            <parameter>context</parameter> is an OpenGL ES context, the
            currently bound context will be made no longer current and
            <parameter>context</parameter> will be made current.
        </para>
        <para>
            OpenGL and OpenGL ES buffer mappings created by e.g.
            <function>glMapBuffer</function> are not affected by
            <function>eglMakeCurrent</function>; they persist whether the
            context owning the buffer is current or not.
        </para>
        <para>
            If <parameter>draw</parameter> is destroyed after
            <function>eglMakeCurrent</function> is called, then subsequent
            rendering commands will be processed and the context state will
            be updated, but the surface contents become undefined. If
            <parameter>read</parameter> is destroyed after
            <function>eglMakeCurrent</function> then pixel values
            <parameter>read</parameter> from the framebuffer (e.g., as
            result of calling glReadPixels) are undefined. If a native
            window or pixmap underlying the <parameter>draw</parameter> or
            <parameter>read</parameter> surfaces is destroyed, rendering and
            <parameter>read</parameter>back are handled as above.
        </para>
        <para>
            To release the current context without assigning a new one, set
            <parameter>context</parameter> to
            <constant>EGL_NO_CONTEXT</constant> and set
            <parameter>draw</parameter> and <parameter>read</parameter> to
            <constant>EGL_NO_SURFACE</constant> . The currently bound
            context for the client API specified by the current rendering
            API is flushed and marked as no longer current, and there will
            be no current context for that client API after
            <function>eglMakeCurrent</function> returns. This is the only
            case in which <function>eglMakeCurrent</function> respects the
            current rendering API. In all other cases, the client API
            affected is determined by <parameter>context</parameter>. This
            is the only case where an uninitialized display may be passed to
            <function>eglMakeCurrent</function>.
        </para>
        <para>
            If ctx is not <constant>EGL_NO_CONTEXT</constant>, then both
            <parameter>draw</parameter> and <parameter>read</parameter> must
            not be <constant>EGL_NO_SURFACE</constant> unless
            <parameter>context</parameter> is a context which supports being
            bound without read and draw surfaces. In this case the context
            is made current without a default framebuffer. The meaning of
            this is defined by the client API of the supporting context (see
            chapter 4 of the OpenGL 3.0 Specification, and the
            <constant>GL_OES_surfaceless_context</constant> OpenGL ES
            extension.).
        </para>
        <para>
            The first time a OpenGL or OpenGL ES context is made current the
            viewport and scissor dimensions are set to the size of the
            <parameter>draw</parameter> surface (as though
            <function>glViewport</function>(0,0,w,h) and
            <function>glScissor</function>(0,0,<parameter>w</parameter>,<parameter>h</parameter>)
            were called, where <parameter>w</parameter> and
            <parameter>h</parameter> are the width and height of the
            surface, respectively). However, the viewport and scissor
            dimensions are not modified when <parameter>context</parameter>
            is subsequently made current. The client is responsible for
            resetting the viewport and scissor in this case.
        </para>
        <para>
            The first time <parameter>context</parameter> is made current,
            if it is without a default framebuffer (e.g. both
            <parameter>draw</parameter> and <parameter>read</parameter> are
            <constant>EGL_NO_SURFACE</constant> ), then the viewport and
            scissor regions are set as though
            <function>glViewport</function>(0,0,0,0) and
            <function>glScissor</function>(0,0,0,0) were called.
        </para>
        <para>
            Implementations may delay allocation of auxiliary buffers for a
            surface until they are required by a context (which may result
            in the <constant>EGL_BAD_ALLOC</constant> error described
            above). Once allocated, however, auxiliary buffers and their
            contents persist until a surface is deleted.
        </para>
        <para>
            Use
            <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>, and
            <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>
            to query the current rendering context and associated display connection and surfaces.
        </para>
    </refsect1>
    <refsect1 xml:id="errors"><title>Errors</title>
        <para>
            If <parameter>draw</parameter> or <parameter>read</parameter>
            are not compatible with <parameter>context</parameter>, then an
            <constant>EGL_BAD_MATCH</constant> error is generated.
        </para>
        <para>
            If <parameter>context</parameter> is current to some other
            thread, or if either <parameter>draw</parameter> or
            <parameter>read</parameter> are bound to contexts in another
            thread, an <constant>EGL_BAD_ACCESS</constant> error is
            generated.
        </para>
        <para>
            If binding <parameter>context</parameter> would exceed the
            number of current contexts of that client API type supported by
            the implementation, an <constant>EGL_BAD_ACCESS</constant> error
            is generated.
        </para>
        <para>
            If either <parameter>draw</parameter> or
            <parameter>read</parameter> are pbuffers created with
            <function>eglCreatePbufferFromClientBuffer</function>, and the
            underlying bound client API buffers are in use by the client API
            that created them, an <constant>EGL_BAD_ACCESS</constant> error
            is generated.
        </para>
        <para>
            If <parameter>context</parameter> is not a valid context and is
            not <constant>EGL_NO_CONTEXT</constant>, an
            <constant>EGL_BAD_CONTEXT</constant> error is generated.
        </para>
        <para>
            If either <parameter>draw</parameter> or
            <parameter>read</parameter> are not valid EGL surfaces and are
            not <constant>EGL_NO_SURFACE</constant>, an
            <constant>EGL_BAD_SURFACE</constant> error is generated.
        </para>
        <para>
            If <parameter>context</parameter> is
            <constant>EGL_NO_CONTEXT</constant> and either
            <parameter>draw</parameter> or <parameter>read</parameter> are
            not <constant>EGL_NO_SURFACE</constant>, an
            <constant>EGL_BAD_MATCH</constant> error is generated.
        </para>
        <para>
            If either of <parameter>draw</parameter> or
            <parameter>read</parameter> is a valid surface and the other is
            <constant>EGL_NO_SURFACE</constant>, an
            <constant>EGL_BAD_MATCH</constant> error is generated.
        </para>
        <para>
            If <parameter>context</parameter> does not support being bound
            without <parameter>read</parameter> and
            <parameter>draw</parameter> surfaces, and both
            <parameter>draw</parameter> and <parameter>read</parameter> are
            <constant>EGL_NO_SURFACE</constant>, an
            <constant>EGL_BAD_MATCH</constant> error is generated.
        </para>
        <para>
            If a native window underlying either <parameter>draw</parameter>
            or <parameter>read</parameter> is no longer valid, an
            <constant>EGL_BAD_NATIVE_WINDOW</constant> error is generated.
        </para>
        <para>
            If <parameter>draw</parameter> and <parameter>read</parameter>
            cannot fit into graphics memory simultaneously, an
            <constant>EGL_BAD_MATCH</constant> error is generated.
        </para>
        <para>
            If the previous context of the calling thread has unflushed
            commands, and the previous surface is no longer valid, an
            <constant>EGL_BAD_CURRENT_SURFACE</constant> error is generated.
        </para>
        <para>
            If the ancillary buffers for <parameter>draw</parameter> and
            <parameter>read</parameter> cannot be allocated, an
            <constant>EGL_BAD_ALLOC</constant> error is generated.
        </para>
        <para>
            If a power management event has occurred, an
            <constant>EGL_CONTEXT_LOST</constant> error is generated.
        </para>
        <para>
            If any of the following are true:

            <itemizedlist>
            <listitem>
                <para>
                    <parameter>context</parameter> is not
                    <constant>EGL_NO_CONTEXT</constant>
                </para>
            </listitem>
            <listitem>
                <para>
                    <parameter>read</parameter> is not
                    <constant>EGL_NO_SURFACE</constant>
                </para>
            </listitem>
            <listitem>
                <para>
                    <parameter>draw</parameter> is not
                    <constant>EGL_NO_SURFACE</constant>
                </para>
            </listitem>
            </itemizedlist>

            then an <constant>EGL_NOT_INITIALIZED</constant> error is
            generated if <parameter>display</parameter> is a valid but
            uninitialized display.
        </para>
        <para>
            As with other commands taking <type>EGLDisplay</type>
            parameters, if <parameter>display</parameter> is not a valid
            <type>EGLDisplay</type> handle, an
            <constant>EGL_BAD_DISPLAY</constant> error is generated. (Some
            implementations have chosen to allow
            <constant>EGL_NO_DISPLAY</constant> as a valid
            <parameter>display</parameter> parameter for
            <function>eglMakeCurrent</function>. This behavior is not
            portable to all EGL implementations, and should be considered as
            an undocumented vendor extension).
        </para>
    </refsect1>
    <refsect1 xml:id="seealso"><title>See Also</title>
        <para>
            <citerefentry><refentrytitle>glReadPixels</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glCopyTexImage2D</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glCopyTexSubImage2D</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglCreateContext</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglCreatePbufferSurface</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglCreatePixmapSurface</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglCreateWindowSurface</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglGetCurrentDisplay</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglGetCurrentSurface</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglGetDisplay</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglInitialize</refentrytitle></citerefentry>
        </para>
    </refsect1>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
</refentry>
