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

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

        <refpurpose>
            Enqueue commands to read from an image or image array object to 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>clEnqueueReadImage</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>image</parameter>
                    </paramdef>
                    <paramdef>
                        <link xlink:href="enums.html#cl_bool">cl_bool</link>
                        <parameter>blocking_read</parameter>
                    </paramdef>
                    <paramdef>const
                        <link xlink:href="scalarDataTypes.html">size_t</link>
                        <parameter>*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>row_pitch</parameter>
                    </paramdef>
                    <paramdef>
                        <link xlink:href="scalarDataTypes.html">size_t</link>
                        <parameter>slice_pitch</parameter>
                    </paramdef>
                    <paramdef>
                        <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>
                        Refers to the host command-queue in which the read command will be
                        queued. <varname>command_queue</varname> and <varname>image</varname>
                        must be created with the same OpenCL context.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> image </varname> </term>
                <listitem>
                    <para>
                        Refers to a valid image or image array object.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> blocking_read </varname> </term>
                <listitem>
                    <para>
                      Indicates if the read operations are <varname>blocking</varname> or
                      <varname>non-blocking</varname>.
                    </para>

                    <para>
                      If <varname>blocking_read</varname> is <constant>CL_TRUE</constant>
                      i.e. the read command is blocking, <function>clEnqueueReadImage</function>
                      does not return until the buffer data has been read and copied into memory
                      pointed to by <varname>ptr</varname>.
                    </para>

                    <para>
                      If <varname>blocking_read</varname> is <constant>CL_FALSE</constant>
                      i.e. map operation is non-blocking, <function>clEnqueueReadImage</function>
                      queues a non-blocking read command and returns. The contents of the
                      buffer that <varname>ptr</varname> points to cannot be used until the read
                      command has completed. The <varname>event</varname> argument returns an
                      event object which can be used to query the execution status of the read
                      command. When the read command has completed, the contents of the buffer
                      that <varname>ptr</varname> points to can be used by the application.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> origin </varname> </term>
                <listitem>
                    <para>
                      Defines the (<emphasis>x, y, z</emphasis>) offset in pixels in the 1D, 2D, or
                      3D image, the (<emphasis>x, y</emphasis>) offset and the image index in the
                      image array or the (x) offset and the image index in the 1D image array.  If
                      <varname>image</varname> is a 2D image object, <varname>origin</varname>[2]
                      must be 0. If <varname>image</varname> is a 1D image or 1D image buffer
                      object, <varname>origin</varname>[1] and <varname>origin</varname>[2]
                      must be 0. If <varname>image</varname> is a 1D image array object,
                      <varname>origin</varname>[2] must be 0.  If <varname>image</varname>
                      is a 1D image array object, <varname>origin</varname>[1] describes the
                      image index in the 1D image array. If <varname>image</varname> is a 2D
                      image array object, <varname>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 (<emphasis>width, height, depth</emphasis>) in pixels of the
                      1D, 2D or 3D rectangle, the (<emphasis>width, height</emphasis>) in pixels
                      of the 2D rectangle and the number of images of a 2D image array or the
                      (<emphasis>width</emphasis>) in pixels of the 1D rectangle and the number
                      of images of a 1D image array. If <varname>image</varname> is a 2D image
                      object, <varname>region</varname>[2] must be 1.  If <varname>image</varname>
                      is a 1D image or 1D image buffer object,  <varname>region</varname>[1]
                      and <varname>region</varname>[2] must be 1. If image 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> row_pitch </varname> </term>
                <listitem>
                    <para>
                      The length of each row in bytes. This value must be greater than or
                      equal to the element size in bytes * <varname>width</varname>. If
                      <varname>row_pitch</varname> is set to 0, the appropriate row pitch
                      is calculated based on the size of each element in bytes multiplied by
                      <varname>width</varname>.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> slice_pitch </varname> </term>
                <listitem>
                    <para>
                      Size in bytes of the 2D slice of the 3D region of a 3D image or
                      each image of a 1D or 2D image array being read.  This must be 0 if
                      <varname>image</varname> is a 1D or 2D image. Otherwise this value must be greater
                      than or equal to <varname>row_pitch</varname> * <varname>height</varname>.
                      If <varname>slice_pitch</varname> is set to 0, the appropriate slice
                      pitch is calculated based on the <varname>row_pitch</varname> *
                      <varname>height</varname>.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> ptr </varname> </term>
                <listitem>
                    <para>
                      The pointer to a buffer in host memory where image data is to be written to.
                    </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 read 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>clEnqueueReadImage</function> to read a region of the
          <varname>image</varname> with the <varname>ptr</varname> argument value set to
          <varname>host_ptr</varname> + (<varname>origin</varname>[2] * <varname>image
          slice pitch</varname> + <varname>origin</varname>[1] * <varname>image
          row pitch</varname> + <varname>origin</varname>[0] * <varname>bytes per
          pixel</varname>), where <varname>host_ptr</varname> is a pointer to the memory
          region specified when the <varname>image</varname> being read 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>
              All commands that use this image object have finished execution before the read
              command begins execution.
            </listitem>

            <listitem>
              The <varname>row_pitch</varname> and <varname>slice_pitch</varname> argument
              values in <function>clEnqueueReadImage</function> must be set to the image row
              pitch and slice pitch.
            </listitem>

            <listitem>
               The image object is not mapped.
            </listitem>

            <listitem>
              The image object is not used by any command-queue until the read command has
              finished execution.
            </listitem>
        </itemizedlist>

        <para>
            If the mipmap extensions are enabled with <citerefentry><refentrytitle>cl_khr_mipmap_image</refentrytitle></citerefentry>, 
            calls to <function>clEnqueueReadImage</function>, 
            <citerefentry><refentrytitle>clEnqueueWriteImage</refentrytitle></citerefentry> and 
            <citerefentry><refentrytitle>clEnqueueMapImage</refentrytitle></citerefentry> can be used to read 
            from or write to a specific mip-level of a mip-mapped image. 
            If image argument is a 1D image, <varname>origin</varname>[1] specifies the mip-level to use. 
            If image argument is a 1D image array, <varname>origin</varname>[2] specifies the mip-level to use. 
            If image argument is a 2D image, <varname>origin</varname>[3] specifies the mip-level to use. 
            If image argument is a 2D image array or a 3D image, <varname>origin</varname>[3] specifies the mip-level to use.
        </para>

    </refsect1>

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

    <refsect1 id="errors"><title>Errors</title>
        <para>
          <function>clEnqueueReadImage</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> and <varname>image</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>image</varname> is not
              a valid image object.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if the region being read specified by
              <varname>origin</varname> and <varname>region</varname> is out of bounds or if
              <varname>ptr</varname> is a NULL value.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if values in <varname>origin</varname>
              and <varname>region</varname> do not follow rules described in the argument
              description for <varname>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_INVALID_IMAGE_SIZE</errorname> if image dimensions (image width,
              height, specified or compute row and/or slice pitch) for <varname>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>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>image</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 of allowed values for <varname>param_name</varname> for
              <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>
              is <constant>CL_FALSE</constant>).
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if
              <function>clEnqueueReadImage</function> is called on <varname>image</varname>
              which has been created with <constant>CL_MEM_HOST_WRITE_ONLY</constant> or
              <constant>CL_MEM_HOST_NO_ACCESS</constant>
            </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_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="clEnqueueReadImage">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clEnqueueWriteImage</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueCopyImage</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>

