<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>clCreateEventFromEGLSyncKHR</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>clCreateEventFromEGLSyncKHR</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2013</year>
                <holder>The Khronos Group Inc.
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>3</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="clCreateFromGLBuffer">
        <refname>clCreateEventFromEGLSyncKHR</refname>

        <refpurpose>
            Creates a linked event object.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                        <link xlink:href="abstractDataTypes.html">cl_event</link>
                     <function>
                        clCreateEventFromEGLSyncKHR
                    </function>
                </funcdef>

                <paramdef><link xlink:href="abstractDataTypes.html">cl_context</link><parameter>context</parameter></paramdef>
                <paramdef>CLeglSyncKHR<parameter>sync</parameter></paramdef>
                <paramdef>CLeglDisplayKHR<parameter>display</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">cl_int</link><parameter>*errcode_ret</parameter></paramdef>

            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

<!-- ================================ PARAMETERS -->

    <refsect1 id="parameters">
        <title>Parameters</title>
        <variablelist>

            <varlistentry>
                <term> <varname> context </varname> </term>
                <listitem>
                    <para>
                      <!-- parameter description --> A valid OpenCL context
                      created from an OpenGL context or share group, using the
                      <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry>
                      extension.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> sync </varname> </term>
                <listitem>
                    <para> <!-- parameter description -->
                        The name of a sync object of type <constant>EGL_SYNC_FENCE_KHR</constant>
                        created with respect to EGLDisplay <varname>display</varname>.
                    </para>
                </listitem>
            </varlistentry>

        </variablelist>
    </refsect1>

<!-- ================================ DESCRIPTION  -->

    <refsect1 id="description"><title>Description</title>
        <para>
            An event object may be created by linking to an EGL sync object. Completion of such an event 
            object is equivalent to waiting for completion of the fence command associated with the linked 
            EGL sync object.
        </para>
    </refsect1>

<!-- ================================ NOTES  -->

    <refsect1 id="notes"><title>Notes</title>
        <para>
            The parameters of an event object linked to 
            an EGL sync object will return the following values 
            when queried with 
            <citerefentry><refentrytitle>clGetEventInfo</refentrytitle></citerefentry>:
        </para>

        <para>
          <itemizedlist>
            <listitem>
              <para>
                The <constant>CL_EVENT_COMMAND_QUEUE</constant> of 
                a linked event is NULL, because the event is not 
                associated with any OpenCL command queue.
              </para>
            </listitem>

            <listitem>
              <para>
                The <constant>CL_EVENT_COMMAND_TYPE</constant> of a linked event is 
                <constant>CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR</constant>, indicating that the event is 
                associated with a EGL sync object, rather than an OpenCL command.
              </para>
            </listitem>

            <listitem>
              <para>
                The <constant>CL_EVENT_COMMAND_EXECUTION_STATUS</constant> 
                of a linked event is either 
                <constant>CL_SUBMITTED</constant>, indicating that the 
                fence command associated with the sync object has 
                not yet completed, or <constant>CL_COMPLETE</constant>, 
                indicating that the fence command has completed.
              </para>
            </listitem>

          </itemizedlist>
        </para>

      <para>
        <function>clCreateEventFromEGLSyncKHR</function> performs an implicit 
        <citerefentry><refentrytitle>clRetainEvent</refentrytitle></citerefentry> 
        on the returned event 
        object. Creating a linked event object also 
        places a reference on the linked EGL sync object. 
        When the event object is deleted, the reference 
        will be removed from the EGL sync object.
      </para>

      <para>
        Events returned from <function>clCreateEventFromEGLSyncKHR</function> 
        may only be consumed by 
        <function>clEnqueueAcquire***</function> commands. 
        Passing such events to any other CL API that enqueues 
        commands will generate a <errorname>CL_INVALID_EVENT</errorname> error."
      </para>

      <para>
        Event objects can also be used to reflect the status 
        of an EGL fence sync object. The sync object
        in turn refers to a fence command executing in 
        an EGL client API command stream. This 
        provides another method of coordinating sharing 
        of EGL / EGL client API objects with OpenCL.
        Completion of EGL / EGL client API commands may 
        be determined by placing an EGL fence 
        command after commands using <function>eglCreateSyncKHR</function>, 
        creating an event from the resulting EGL 
        sync object using 
        <function>clCreateEventFromEGLSyncKHR</function> 
        and then specifying it in the <varname>event_wait_list</varname>
        of a <function>clEnqueueAcquire***</function> command. 
        This method may be considerably more efficient than 
        calling operations like <function>glFinish</function>, 
        and is referred to as <emphasis>explicit synchronization</emphasis>. 
        The application is 
        responsible for ensuring the command stream 
        associated with the EGL fence is flushed to ensure 
        the CL queue is submitted to the device. 
        Explicit synchronization is most useful when an EGL 
        client API context bound to another thread 
        is accessing the memory objects.
      </para>

    </refsect1>

<!-- ================================ ERRORS  -->

    <refsect1 id="errors"><title>Errors</title>
        <para>
          Returns a valid OpenCL event object and <varname>errcode_ret</varname> is set to
          <errorname>CL_SUCCESS</errorname> if the event object is created successfully.
          Otherwise, it returns a NULL value with one of the following error values returned
          in <varname>errcode_ret</varname>:
        </para>

        <itemizedlist mark="disc">
            <listitem>
              <errorname>CL_INVALID_CONTEXT</errorname> if <varname>context</varname> is not
              a valid context or was not created from a GL context.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_EGL_OBJECT_KHR</errorname> if <varname>sync</varname>
              is not a valid EGLSyncKHR handle created with 
              respect to EGLDisplay <varname>display</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_EGL_OBJECT_KHR</errorname> if <varname>sync</varname>
              is not a valid EGLSyncKHR object of type
              <constant>EGL_SYNC_FENCE_KHR</constant> created with 
              respect to EGLDisplay <varname>display</varname>.
            </listitem>
        </itemizedlist>

    </refsect1>

<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->

<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>

            <olink uri="clCreateEventFromEGLSyncKHR">OpenCL Specification</olink>
        </para>
    </refsect1>

<!-- ================================ ALSO SEE -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>cl_khr_egl_event</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueAcquireEGLObjectsKHR</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueAcquireGLObjects</refentrytitle></citerefentry>
        </para>
    </refsect1>

<!-- ============================== COPYRIGHT -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
        <para />
    </refsect3>

<!-- 4-Nov-2015, API ver 2.1 rev 19; Ext ver 2.1 rev 10; C lang ver 2.0 rev 30 -->
</refentry>

