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

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

        <refpurpose>
            Enqueues a command to copy an image object to a 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>clEnqueueCopyImageToBuffer</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_image</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>*region</parameter></paramdef>
                    <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>dst_offset</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>
                      Must be a valid host command-queue. The OpenCL context associated with
                      <varname>command_queue</varname>, <varname>src_image</varname>, and
                      <varname>dst_buffer</varname> must be the same.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> src_image </varname> </term>
                <listitem>
                    <para>
                        A valid image object.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> dst_buffer </varname> </term>
                <listitem>
                    <para>
                        A valid buffer object.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> src_origin </varname> </term>
                <listitem>
                    <para>
                      Defines the (x, y, z) offset in pixels in the 1D, 2D or 3D image, the (x,
                      y) offset and the image index in the 2D image array or the (x) offset and
                      the image index in the 1D image array.  If <varname>src_image</varname>
                      is a 2D image object, <varname>src_origin</varname>[2] must be 0.
                      If <varname>src_image</varname> is a 1D image or 1D image buffer object,
                      <varname>src_origin</varname>[1] and <varname>src_origin</varname>[2]
                      must be 0.  If <varname>src_image</varname> is a 1D image array object,
                      <varname>src_origin</varname>[2] must be 0.  If <varname>src_image</varname>
                      is a 1D image array object, <varname>src_origin</varname>[1] describes
                      the image index in the 1D image array. If <varname>src_image</varname>
                      is a 2D image array object, <varname>src_origin</varname>[2] describes
                      the image index in the 2D image array.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> region </varname> </term>
                <listitem>
                    <para>
                      Defines the (width, height, depth) in pixels of the 1D, 2D or 3D rectangle,
                      the (width, height) in pixels of the 2D rectangle and the number of images
                      of a 2D image array or the (width) in pixels of the 1D rectangle and the
                      number of images of a 1D image array.  If <varname>src_image</varname>
                      is a 2D image object, <varname>region</varname>[2] must be 1.
                      If <varname>src_image</varname> is a 1D image or 1D image buffer
                      object, <varname>region</varname>[1] and <varname>region</varname>[2]
                      must be 1.  If <varname>src_image</varname> is a 1D image array object,
                      <varname>region</varname>[2] must be 1. The values in <varname>region</varname> cannot be 0.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> dst_offset </varname> </term>
                <listitem>
                    <para>
                      Refers to the offset where to begin copying data into
                      <varname>dst_buffer</varname>.  The size in bytes of the region to be copied
                      referred to as <varname>dst_cb</varname> is computed as <varname>width * height * depth * bytes/image
                      element</varname> if <varname>src_image</varname> is a 3D image object, is computed
                      as <varname>width * height * bytes/image element</varname> if <varname>src_image</varname>
                      is a 2D image, is computed as <varname>width * height * arraysize * bytes/image
                      element</varname> if <varname>src_image</varname> is a 2D image array object, is
                      computed as <varname>width * bytes/image element</varname> if <varname>src_image</varname>
                      is a 1D image or 1D image buffer object and is computed as <varname>width *
                      arraysize * bytes/image element</varname> if <varname>src_image</varname> is a 1D
                      image array object.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        event_wait_list
                    ,</varname>
                    <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></title>
        <para>
            If the mipmap extensions are enabled with 
            <citerefentry><refentrytitle>cl_khr_mipmap_image</refentrytitle></citerefentry>, 
            calls to <citerefentry><refentrytitle>clEnqueueCopyImage</refentrytitle></citerefentry>, 
            <function>clEnqueueCopyImageToBuffer</function>, and 
            <citerefentry><refentrytitle>clEnqueueCopyBufferToImage</refentrytitle></citerefentry> 
            can also be used to copy 
            from and to a specific mip-level of a mip-mapped image. 
            If <varname>src_image</varname> argument is a 1D image, 
            <varname>src_origin</varname>[1] specifies the mip-level 
            to use. If <varname>src_image</varname> argument is a 
            1D image array, <varname>src_origin</varname>[2] 
            specifies the mip-level to use. If <varname>src_image</varname> 
            argument is a 2D image, <varname>src_origin</varname>[3] 
            specifies the mip-level to use. 
            If <varname>src_image</varname> argument is a 2D image 
            array or a 3D image, <varname>src_origin</varname>[3] 
            specifies the mip-level to use. If 
            <varname>dst_image</varname> argument is a 1D image, 
            <varname>dst_origin</varname>[1] specifies the 
            mip-level to use. If <varname>dst_image</varname> argument 
            is a 1D image array, <varname>dst_origin</varname>[2] 
            specifies the mip-level to use. If 
            <varname>dst_image</varname> argument is a 2D image, 
            <varname>dst_origin</varname>[3] specifies the 
            mip-level to use. If <varname>dst_image</varname> 
            argument is a 2D image array or a 3D image, 
            <varname>dst_origin</varname>[3] specifies the 
            mip-level to use. 
        </para>

        <para>
            If the mip level specified is not a valid value, 
            these functions return the error 
            <errorname>CL_INVALID_MIP_LEVEL</errorname>.
        </para>

    </refsect1>
 
<!-- ================================ ERRORS  -->

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

            <listitem>
              <errorname>CL_INVALID_CONTEXT</errorname> if the context associated
              with <varname>command_queue</varname>, <varname>src_image</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_image</varname> is
              not a valid image object or <varname>dst_buffer</varname> is not a valid buffer
              object or if <varname>src_image</varname> is a 1D image buffer object created
              from <varname>dst_buffer</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if the 1D, 2D, or 3D rectangular region
              specified by <varname>src_origin</varname> and <varname>src_origin</varname> +
              <varname>region</varname> refers to a region outside <varname>src_image</varname>,
              or if the region specified by <varname>dst_offset</varname> and
              <varname>dst_offset</varname> + <varname>dst_cb</varname> refers to a region
              outside <varname>dst_buffer</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if values in <varname>src_origin</varname>
              and <varname>region</varname> do not follow rules described in the argument
              description for <varname>src_origin</varname> and <varname>region</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> &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>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_INVALID_IMAGE_SIZE</errorname> if image dimensions (image width,
              height, specified or compute row and/or slice pitch) for <varname>src_image</varname>
              are not supported by device associated with <varname>queue</varname>.
            </listitem>

            <listitem>
              <errorname>CL_IMAGE_FORMAT_NOT_SUPPORTED</errorname> if image format (image channel
              order and data type) for <varname>src_image</varname> are not supported by 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_image</varname>
              or <varname>dst_buffer</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if the device
              associated with <varname>command_queue</varname> does not
              support images (i.e. <constant>CL_DEVICE_IMAGE_SUPPORT</constant>
              specified in the table <!-- table 4.3 --> of OpenCL Device Queries for
              <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>
              is <constant>CL_FALSE</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="clEnqueueCopyImageToBuffer">OpenCL Specification</olink>
        </para>
    </refsect1>

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

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

<!-- 8-Dec-2013, rev. 19 -->
</refentry>

