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

    <refmeta>
        <refentrytitle>
            clEnqueueCopyBufferRect
        </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 -->
<!-- For each <funcprototype />, use <funcdef /> for the first part, with the function name
     set as <function /> and <paramdef /> for each or the parameters, plus <parameter /> for the
     actual parameter name. If you need multiple synopses, use separate <funcsynopsis /> sets.

-->
    <refnamediv id="clEnqueueCopyBufferRect ">
        <refname>
            clEnqueueCopyBufferRect
        </refname>

        <refpurpose>
            Enqueues a command to copy a 2D or 3D rectangular region from a buffer object to another buffer object.
        </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>clEnqueueCopyBufferRect </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>src_buffer</parameter></paramdef>
                <paramdef><link xlink:href="abstractDataTypes.html">cl_mem</link><parameter>dst_buffer</parameter></paramdef>
                <paramdef>const <link xlink:href="scalarDataTypes.html">size_t</link><parameter>*src_origin</parameter></paramdef>
                <paramdef>const <link xlink:href="scalarDataTypes.html">size_t</link><parameter>*dst_origin</parameter></paramdef>
                <paramdef>const <link xlink:href="scalarDataTypes.html">size_t</link><parameter>*region</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>src_row_pitch</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>src_slice_pitch</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>dst_row_pitch</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>dst_slice_pitch</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 -->
<!-- For each <varlistentry />, place the parameter name in <term /><varname />, then the definition in
     <listitem /><para />. When refering to anything
     that has a page in this system, use <citerefentry /><refentrytitle /> to make it a link.

-->
    <refsect1 id="parameters">
        <title>Parameters</title>
        <variablelist>
            <varlistentry>
                <term> <varname> command_queue </varname> </term>
                <listitem>
                    <para>
                      The host command-queue in which the copy command will be queued. The
                      OpenCL context associated with <varname>command_queue</varname>,
                      <varname>src_buffer</varname>, and <varname>dst_buffer</varname> must be
                      the same.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        src_origin
                    </varname>
                </term>
                <listitem>
                    <para>
                      The (<emphasis>x, y, z</emphasis>) offset in the memory region associated
                      with <varname>src_buffer</varname>. For a 2D rectangle region, the
                      <varname>z</varname> value given by <varname>src_origin</varname>[2] should
                      be 0. The offset in bytes is computed as <varname>src_origin</varname>[2]
                      * <varname>src_slice_pitch</varname> + <varname>src_origin</varname>[1]
                      * <varname>src_row_pitch</varname> + <varname>src_origin</varname>[0].
                    </para>
               </listitem>
            </varlistentry>


            <varlistentry>
                <term> <varname> dst_origin </varname> </term>
                <listitem>
                    <para>
                      The (<emphasis>x, y, z</emphasis>) offset in the memory region associated
                      with <varname>dst_buffer</varname>. For a 2D rectangle region, the
                      <varname>z</varname> value given by <varname>dst_origin</varname>[2] should
                      be 0. The offset in bytes is computed as <varname>dst_origin</varname>[2]
                      * <varname>dst_slice_pitch</varname> + <varname>dst_origin</varname>[1]
                      * <varname>dst_row_pitch</varname> + <varname>dst_origin</varname>[0].
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname>region</varname> </term>
                <listitem>
                    <para>
                      The (<varname>width</varname> in bytes, <varname>height</varname> in rows, 
                      <varname>depth</varname> in slices) in bytes of the 2D or 3D
                      rectangle being copied. For a 2D rectangle, the <varname>depth</varname>
                      value given by <varname>region</varname>[2] should be 1. The values in 
                      <varname>region</varname> cannot be 0.
                    </para>
               </listitem>
            </varlistentry>


             <varlistentry>
                <term> <varname>src_row_pitch</varname> </term> <listitem>
                    <para>
                      The length of each row in bytes to be used for the memory region associated
                      with <varname>src_buffer</varname>. If <varname>src_row_pitch</varname> is 0,
                      <varname>src_row_pitch</varname> is computed as <varname>region</varname>[0].
                    </para>
               </listitem>
            </varlistentry>


             <varlistentry>
                <term> <varname>src_slice_pitch</varname> </term> <listitem>
                    <para>
                      The length of each 2D slice in bytes to be used for the
                      memory region associated with <varname>src_buffer</varname>. If
                      <varname>src_slice_pitch</varname> is 0, <varname>src_slice_pitch</varname>
                      is computed as <varname>region</varname>[1] *
                      <varname>src_row_pitch</varname>.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname>dst_row_pitch</varname> </term>
                <listitem>
                    <para>
                      The length of each row in bytes to be used for the memory region associated
                      with <varname>dst_buffer</varname>. If <varname>dst_row_pitch</varname> is 0,
                      <varname>dst_row_pitch</varname> is computed as <varname>region</varname>[0].
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname>dst_slice_pitch</varname> </term>
                <listitem>
                    <para>
                      The length of each 2D slice in bytes to be used for the
                      memory region associated with <varname>dst_buffer</varname>. If
                      <varname>dst_slice_pitch</varname> is 0, <varname>dst_slice_pitch</varname>
                      is computed as <varname>region</varname>[1] *
                      <varname>dst_row_pitch</varname>.
                    </para>
               </listitem>
            </varlistentry>



            <varlistentry>
                <term>
                    <varname>
                        event_wait_list
                    </varname>
                </term>
                <term>
                    <varname>
                        num_events_in_wait_list
                    </varname>
                </term>
                <listitem>
                    <para>
                      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 copy 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.
                      <citerefentry><refentrytitle>clEnqueueBarrierWithWaitList</refentrytitle></citerefentry>
                      can be used instead.  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>
          <function>clEnqueueCopyBufferRect</function> enqueues a command to copy a 2D or 3D
          rectangular region from the buffer object identified by <varname>src_buffer</varname>
          to a 2D or 3D region in the buffer object identified by <varname>dst_buffer</varname>.
          Copying begins at the source offset and destination offset which are computed
          as described in the description for <varname>src_origin</varname> and
          <varname>dst_origin</varname>.
        </para>

        <para>
          Each byte of the region's width is copied from the source offset to the destination
          offset.  After copying each width, the source and destination offsets are incremented by
          their respective source and destination row pitches. After copying each 2D rectangle,
          the source and destination offsets are incremented by their respective source and
          destination slice pitches.
        </para>

        <para>
          NOTE: If <varname>src_buffer</varname> and <varname>dst_buffer</varname>
          are the same buffer object, <varname>src_row_pitch</varname> must equal
          <varname>dst_row_pitch</varname> and <varname>src_slice_pitch</varname> must equal
          <varname>dst_slice_pitch</varname>.
        </para>
    </refsect1>

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

    <refsect1 id="errors"><title>Errors</title>
        <para>
          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 host command-queue.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_CONTEXT</errorname> if the context associated
              with <varname>command_queue</varname>, <varname>src_buffer</varname>, and
              <varname>dst_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>src_buffer</varname>
              and <varname>dst_buffer</varname> are not valid buffer objects.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if (<varname>src_origin</varname>, 
              <varname>region</varname>, <varname>src_row_pitch</varname>, <varname>src_slice_pitch</varname>) or 
              (<varname>dst_origin</varname>, <varname>region</varname>, <varname>dst_row_pitch</varname>, 
              <varname>dst_slice_pitch</varname>) require accessing elements outside the
              <varname>src_buffer</varname> and <varname>dst_buffer</varname> objects respectively.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if any <varname>region</varname> array
              element is 0.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>src_row_pitch</varname>
              is not 0 and is less than <varname>region</varname>[0].
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>dst_row_pitch</varname>
              is not 0 and is less than <varname>region</varname>[0].
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>src_slice_pitch</varname> is not
              0 and is less than <varname>region</varname>[1] * <varname>src_row_pitch</varname>
              or if <varname>src_slice_pitch</varname> is not 0 and is not a multiple of
              <varname>src_row_pitch</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>dst_slice_pitch</varname> is not
              0 and is less than <varname>region</varname>[1] * <varname>dst_row_pitch</varname>
              or if <varname>dst_slice_pitch</varname> is not 0 and is not a multiple of
              <varname>dst_row_pitch</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>src_buffer</varname>
              and <varname>dst_buffer</varname> are the same buffer
              object and <varname>src_slice_pitch</varname> is not equal to
              <varname>dst_slice_pitch</varname> and <varname>src_row_pitch</varname> is not
              equal to <varname>dst_row_pitch</varname>.
            </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> is &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_MEM_COPY_OVERLAP</errorname> if <varname>src_buffer</varname>
              and <varname>dst_buffer</varname> are the same buffer or sub-buffer object and the source
              and destination regions overlap or if <varname>src_buffer</varname> and
              <varname>dst_buffer</varname> are different sub-buffers of the same associated
              buffer object and they overlap.  Refer to Appendix D in the OpenCL specification
              for details on how to determine if source and destination regions overlap.
            </listitem>

            <listitem>
              <errorname>CL_MISALIGNED_SUB_BUFFER_OFFSET </errorname> if
              <varname>src_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_MISALIGNED_SUB_BUFFER_OFFSET </errorname> if
              <varname>dst_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_MEM_OBJECT_ALLOCATION_FAILURE</errorname> if there is a failure
              to allocate memory for data store associated with <varname>src_buffer</varname>
              or <varname>dst_buffer</varname>.
            </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="clEnqueueCopyBufferRect">OpenCL Specification</olink>
        </para>
    </refsect1>

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

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

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

