<?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-2009</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>2</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>[3]</paramdef>
					<paramdef>const <link xlink:href="scalarDataTypes.html">size_t</link><parameter>region</parameter>[3]</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 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 (<emphasis>x, y, z</emphasis>) offset in pixels in the image from where to copy. If <varname>src_image</varname> is a 2D image object, the z value given by <varname>src_origin</varname>[2] must be 0.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
						region                    
					</varname>
                </term>
                <listitem>
                    <para> 
						Defines the (<varname>width</varname>, <varname>height</varname>, <varname>depth</varname>) in pixels of the 2D or 3D rectangle to copy. If <varname>src_image</varname> is a 2D image object, the <varname>depth</varname> value given by <varname>region</varname>[2] must be 1.
                    </para>
               </listitem>
            </varlistentry>
			<varlistentry>
                <term>
                    <varname>
						dst_offset
                    </varname>
                </term>

                <listitem>
                    <para>
						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</varname> * <varname>height</varname> * <varname>depth</varname> * <varname>bytes</varname>/<varname>image element</varname> if <varname>src_image</varname> is a 3D image object and is computed as <varname>width</varname> * <varname>height</varname> * <varname>bytes</varname>/<varname>image element</varname> if <varname>src_image</varname> is a 2D image 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.
                    </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>clEnqueueBarrier</refentrytitle></citerefentry> can be used instead.			
					</para>
				</listitem>
			</varlistentry>	
   


        </variablelist>
    </refsect1>

    
<!-- ================================ NOTES  -->        
<!--<refsect1 id="notes"><title>Notes</title>
        <para>

        </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 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 and <varname>dst_buffer</varname> is not a valid buffer object.
			</listitem>
			
			
			<listitem>
				<errorname>CL_INVALID_VALUE</errorname> if the 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 <varname>src_image</varname> is a 2D image object and <varname>src_origin</varname>[2] is not equal to 0 or <varname>region</varname>[2] is not equal to 1.
			</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> greater than 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_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_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>
        </para>
    </refsect1>

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

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

</refentry>

