<?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>clEnqueueWriteBuffer</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>
            clEnqueueWriteBuffer
        </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="clEnqueueWriteBuffer">
        <refname>
            clEnqueueWriteBuffer
        </refname>

        <refpurpose>
            Enqueue commands to write to a buffer object from host memory.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">cl_int</link>
 <function>clEnqueueWriteBuffer</function>
                </funcdef>

                    <paramdef><link xlink:href="abstractDataTypes.html">cl_command_queue</link><parameter>command_queue</parameter></paramdef>
                    <paramdef><link xlink:href="abstractDataTypes.html">cl_mem</link><parameter>buffer</parameter></paramdef>
                    <paramdef><link xlink:href="enums.html#cl_bool">cl_bool</link><parameter>blocking_write</parameter></paramdef>
                    <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>offset</parameter></paramdef>
                    <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>size</parameter></paramdef>
                    <paramdef>const <link xlink:href="scalarDataTypes.html">void</link><parameter>*ptr</parameter></paramdef>
                    <paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>num_events_in_wait_list</parameter></paramdef>
                    <paramdef>const <link xlink:href="abstractDataTypes.html">cl_event</link><parameter>*event_wait_list</parameter></paramdef>
                    <paramdef><link xlink:href="abstractDataTypes.html">cl_event</link><parameter>*event</parameter></paramdef>

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

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

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

            <varlistentry>
                <term> <varname> command_queue </varname> </term>
                <listitem>
                    <para>
                        Is a valid host command-queue in which the write command will be
                        queued. <varname>command_queue</varname> and <varname>buffer</varname> must
                        be created with the same OpenCL context.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> buffer </varname> </term>
                <listitem>
                    <para>
                        Refers to a valid buffer object.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> blocking_write </varname> </term>
                <listitem>
                    <para>
                      Indicates if the write operations are
                      <varname>blocking</varname> or <varname>nonblocking</varname>.
                    </para>

                    <para>
                      If <varname>blocking_write</varname> is <constant>CL_TRUE</constant>, the
                      OpenCL implementation copies the data referred to by <varname>ptr</varname>
                      and enqueues the write operation in the command-queue. The memory pointed
                      to by <varname>ptr</varname> can be reused by the application after the
                      <function>clEnqueueWriteBuffer</function> call returns.
                    </para>

                    <para>
                      If <varname>blocking_write</varname> is <constant>CL_FALSE</constant>,
                      the OpenCL implementation will use <varname>ptr</varname> to perform a
                      nonblocking write. As the write is non-blocking the implementation can return
                      immediately. The memory pointed to by <varname>ptr</varname> cannot be reused
                      by the application after the call returns. The <varname>event</varname>
                      argument returns an event object which can be used to query the execution
                      status of the write command. When the write command has completed, the memory
                      pointed to by <varname>ptr</varname> can then be reused by the application.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> offset </varname> </term>
                <listitem>
                    <para>
                        The offset in bytes in the buffer object to write to.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> size </varname> </term>
                <listitem>
                    <para>
                        The size in bytes of data being written.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> ptr </varname> </term>
                <listitem>
                    <para>
                        The pointer to buffer in host memory where data is to be written from.
                    </para>
               </listitem>
            </varlistentry>

               <varlistentry>
                <term> <varname>event_wait_list</varname>
                </term>
                <term>
                    <varname>num_events_in_wait_list</varname>
                </term>

                <listitem>
                    <para>
                      <varname>event_wait_list</varname>
                      and <varname>num_events_in_wait_list</varname> specify events that
                      need to complete before this particular command can be executed. If
                      <varname>event_wait_list</varname> is NULL, then this particular command does
                      not wait on any event to complete. If <varname>event_wait_list</varname>
                      is NULL, <varname>num_events_in_wait_list</varname> must be 0. If
                      <varname>event_wait_list</varname> is not NULL, the list of events
                      pointed to by <varname>event_wait_list</varname> must be valid
                      and <varname>num_events_in_wait_list</varname> must be greater
                      than 0. The events specified in <varname>event_wait_list</varname>
                      act as synchronization points.  The context associated with events in
                      <varname>event_wait_list</varname> and <varname>command_queue</varname> must
                      be the same.  The memory associated with <varname>event_wait_list</varname>
                      can be reused or freed after the function returns.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> event </varname> </term>
                <listitem>
                    <para>
                      Returns an event object that identifies
                      this particular write command and can be used to query or queue a wait
                      for this particular command to complete. <varname>event</varname> can be
                      NULL in which case it will not be possible for the application to query
                      the status of this command or queue a wait for this command to complete.
                      If the <varname>event_wait_list</varname> and the <varname>event</varname> 
                      arguments are not NULL, the <varname>event</varname> argument should not 
                      refer to an element of the <varname>event_wait_list</varname> array
                    </para>
               </listitem>
            </varlistentry>

        </variablelist>
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
        <para>
          Calling <function>clEnqueueWriteBuffer</function> to update the latest bits
          in a region of the buffer object with the <varname>ptr</varname> argument
          value set to <varname>host_ptr</varname> + <varname>offset</varname>, where
          <varname>host_ptr</varname> is a pointer to the memory region specified when the
          buffer object being written is created with <constant>CL_MEM_USE_HOST_PTR</constant>,
          must meet the following requirements in order to avoid undefined behavior:
        </para>

        <itemizedlist mark="disc">
            <listitem>
              The host memory region given by <varname>(host_ptr + offset, cb)</varname>
              contains the latest bits when the enqueued write command begins execution.
            </listitem>

            <listitem>
              The buffer object or memory objects created from this buffer object are not mapped.
            </listitem>

            <listitem>
              The buffer object or memory objects created from this buffer object are not used
              by any command-queue until the read command has finished execution.
            </listitem>
        </itemizedlist>
    </refsect1>

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

    <refsect1 id="errors"><title>Errors</title>
        <para>
          <function>clEnqueueWriteBuffer</function> returns <errorname>CL_SUCCESS</errorname> if
          the function is executed successfully. Otherwise, it returns one of the following errors:
        </para>

        <itemizedlist mark="disc">
            <listitem>
              <errorname>CL_INVALID_COMMAND_QUEUE</errorname> if <varname>command_queue</varname>
              is not a valid command-queue.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_CONTEXT</errorname> if the context associated with
              <varname>command_queue</varname> and <varname>buffer</varname> are not the same
              or if the context associated with <varname>command_queue</varname> and events in
              <varname>event_wait_list</varname> are not the same.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_MEM_OBJECT</errorname> if <varname>buffer</varname>
                is not a valid buffer object.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if the region being written specified
              by (<varname>offset</varname>, <varname>size</varname>) is out of bounds or if
              <varname>ptr</varname> is a NULL value.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_EVENT_WAIT_LIST</errorname>
              if <varname>event_wait_list</varname> is NULL and
              <varname>num_events_in_wait_list</varname> &gt;
              0, or <varname>event_wait_list</varname> is not NULL and
              <varname>num_events_in_wait_list</varname> is 0, or if event objects in
              <varname>event_wait_list</varname> are not valid events.
            </listitem>

            <listitem>
              <errorname>CL_MISALIGNED_SUB_BUFFER_OFFSET</errorname> if
              <varname>buffer</varname> is a sub-buffer object and <varname>offset</varname>
              specified when the sub-buffer object is created is not aligned to
              <constant>CL_DEVICE_MEM_BASE_ADDR_ALIGN</constant> value for device associated
              with <varname>queue</varname>.
            </listitem>

            <listitem>
              <errorname>CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST</errorname> if the read
              and write operations are blocking and the execution status of any of the events
              in <varname>event_wait_list</varname> is a negative integer value.
            </listitem>

            <listitem>
              <errorname>CL_MEM_OBJECT_ALLOCATION_FAILURE</errorname> if there is a failure to
              allocate memory for data store associated with <varname>buffer</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if
              <citerefentry><refentrytitle>clEnqueueWriteBuffer</refentrytitle></citerefentry>
              is called on <varname>buffer</varname> which has been
              created with <constant>CL_MEM_HOST_READ_ONLY</constant> or
              <constant>CL_MEM_HOST_NO_ACCESS</constant>.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </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="clEnqueueWriteBuffer">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clEnqueueCopyBuffer</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueReadBuffer</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueReadBufferRect</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueWriteBufferRect</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>

 <!-- 24-Oct-2015, API rev. 19 -->
</refentry>

