<refentry xmlns="http://docbook.org/ns/docbook" version="5.0" xml:base="" xml:id="eglWaitSync">
    <info>
         <copyright>
             <year>2018</year>
             <holder>The Khronos Group Inc.</holder>
         </copyright>
    </info>
    <refmeta>
        <refentrytitle>eglWaitSync</refentrytitle>
        <manvolnum>3G</manvolnum>
    </refmeta>
    <refnamediv>
        <refname>eglWaitSync</refname>
        <refpurpose>
            Wait in the server for a sync object to be signalled
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>C Specification</title>
        <funcsynopsis>
            <funcprototype>
            <funcdef>EGLBoolean <function>eglWaitSync</function></funcdef>
            <paramdef>(EGLDisplay <parameter>display</parameter></paramdef>
            <paramdef>EGLSync <parameter>sync</parameter></paramdef>
            <paramdef>EGLint <parameter>flags</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>sync</parameter></term>
                <listitem><para>
                    Specifies the sync object to wait on.
                </para></listitem>
            </varlistentry>
            <varlistentry>
                <term><parameter>flags</parameter></term>
                <listitem><para>
                    Specifies flags controlling wait behavior.
                </para></listitem>
            </varlistentry>
        </variablelist>
    </refsect1>
    <refsect1 xml:id="description"><title>Description</title>
        <para>
            <function>eglWaitSync</function> is similar to
            <function>eglClientWaitSync</function>, but instead of blocking
            and not returning to the application until
            <parameter>sync</parameter> is signaled,
            <function>eglWaitSync</function> returns immediately. On
            success, <constant>EGL_TRUE</constant> is returned, and the
            server for the client API context will block until
            <parameter>sync</parameter> is signaled.
        </para>
        <para>
            Note: <function>eglWaitSync</function> allows applications to
            continue to queue commands from the application in anticipation
            of the sync being signaled, potentially increasing parallelism
            between application, client API server code, and the GPU. The
            server only blocks execution of commands for the specific
            context on which <function>eglWaitSync</function> was issued;
            other contexts implemented by the same server are not affected..
        </para>
        <para>
            <parameter>sync</parameter> has the same meaning as for
            <function>eglClientWaitSync</function>.
        </para>
        <para>
            <parameter>flags</parameter> must be 0.
        </para>
        <para>
            <function>eglWaitSync</function> requires support from the bound
            client API, and will not succeed unless the same client API
            properties described for creation of fence syncs in
            <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>
            are satisfied.
        </para>
    </refsect1>
    <refsect1 xml:id="errors"><title>Errors</title>
        <para>
            <function>eglWaitSync</function> returns
            <constant>EGL_FALSE</constant> on failure, and does not cause
            the server for the client API context to block.
        </para>
        <para>
            If the current context for the currently bound client API does
            not support server waits, an <constant>EGL_BAD_MATCH</constant>
            error is generated.
        </para>
        <para>
            If no context is current for the currently bound client API
            (i.e., <function>eglGetCurrentContext</function> returns
            <constant>EGL_NO_CONTEXT</constant>), an
            <constant>EGL_BAD_MATCH</constant> error is generated.
        </para>
        <para>
            If <parameter>display</parameter> does not match the
            <type>EGLDisplay</type> passed to
            <function>eglCreateSync</function> when
            <parameter>sync</parameter> was created, the behavior is
            undefined.
        </para>
        <para>
            If <parameter>sync</parameter> is not a valid sync object for
            <parameter>display</parameter>, an
            <constant>EGL_BAD_PARAMETER</constant> error is generated.
        </para>
        <para>
            If <parameter>flags</parameter> is not 0, an
            <constant>EGL_BAD_PARAMETER</constant> error is generated.
        </para>
    </refsect1>
    <refsect1 xml:id="notes"><title>Notes</title>
        <para>
            <function>eglWaitSync</function> is available only if the EGL
            version is 1.5 or greater.
        </para>
    </refsect1>
    <refsect1 xml:id="seealso"><title>See Also</title>
        <para>
            <citerefentry><refentrytitle>eglClientWaitSync</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglCreateSync</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>eglGetCurrentContext</refentrytitle></citerefentry>
        </para>
    </refsect1>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="copyright.xml"/>
</refentry>
