<?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" [
<!ENTITY map_flags_Inc SYSTEM "map_flags_Inc.xml">
<!ENTITY accessMappedInc SYSTEM "accessMappedInc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>clEnqueueMapImage</keyword>
        </keywordset>
    </refentryinfo>

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

        <refpurpose>
            Enqueues a command to map a region of an image object into the host address
            space and returns a pointer to this mapped region.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">void</link> * <function>clEnqueueMapImage </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_map</parameter>
                    </paramdef>
                    <paramdef>
                        <link xlink:href="enums.html#cl_map_flags">cl_map_flags</link>
                        <parameter>map_flags</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>*image_row_pitch</parameter>
                    </paramdef>
                    <paramdef>
                        <link xlink:href="scalarDataTypes.html">size_t</link>
                        <parameter>*image_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>
                    <paramdef>
                        <link xlink:href="scalarDataTypes.html">cl_int</link>
                        <parameter>*errcode_ret</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.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> image </varname> </term>
                <listitem>
                    <para>
                      A valid image object. The OpenCL context associated with
                      <varname>command_queue</varname> and <varname>image</varname> must be
                      the same.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> blocking_map </varname> </term>
                <listitem>
                    <para>
                      Indicates if the map operation is <varname>blocking</varname> or
                      <varname>non-blocking</varname>.
                    </para>

                    <para>
                      If <varname>blocking_map</varname> is <constant>CL_TRUE</constant>,
                      <function>clEnqueueMapImage</function> does not return until the specified
                      region in <varname>image</varname> is mapped into the host address space
                      and the application can access the contents of the mapped region using
                      the pointer returned by <function>clEnqueueMapImage</function>.
                    </para>

                    <para>
                      If <varname>blocking_map</varname> is <constant>CL_FALSE</constant>
                      i.e. map operation is non-blocking, the pointer to the mapped region
                      returned by <function>clEnqueueMapImage</function> cannot be used until
                      the map command has completed. The <varname>event</varname> argument
                      returns an event object which can be used to query the execution status
                      of the map command. When the map command is completed, the application
                      can access the contents of the mapped region using the pointer returned
                      by <function>clEnqueueMapImage</function>.
                    </para>
                </listitem>
            </varlistentry>

            <varlistentry>
                <term><varname>map_flags</varname></term>
                <listitem>
                    <para>
                        A bit-bield with the following supported values.
                    </para>

                    &map_flags_Inc;

            </listitem>
        </varlistentry>

<!-- ================================ END PARAMETER TABLE  -->

            <varlistentry>
                <term> <varname> origin </varname> </term>
                <listitem>
                    <para>
                      Defines the (<varname>x, y, z</varname>) offset in pixels in the 1D, 
                      2D or 3D image, the (<varname>x, y</varname>) offset and the image index 
                      in the 2D image array or the (<varname>x</varname>) 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 (<varname>width</varname>, <varname>height</varname>, 
                      <varname>depth</varname>) in pixels of the 1D, 2D or 3D rectangle,
                      the (<varname>width</varname>, <varname>height</varname>) in 
                      pixels of the 2D rectangle and the number of images of
                      a 2D image array or the (<varname>width</varname>) 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 <varname>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> image_row_pitch </varname> </term>
                <listitem>
                    <para>
                        Returns the scan-line pitch in bytes for the mapped region. 
                        This must be a non-NULL value.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> image_slice_pitch </varname> </term>
                <listitem>
                    <para>
                      Returns the size in bytes of each 2D slice of a 3D image or the size of
                      each 1D or 2D image in a 1D or 2D image array for the mapped region. For
                      a 1D and 2D image, zero is returned if this argument is not NULL. For a
                      3D image, 1D, and 2D image array, <varname>image_slice_pitch</varname>
                      must be a non-NULL value.
                    </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
                      <function>clEnqueueMapImage</function> can be executed. If
                      <varname>event_wait_list</varname> is NULL, then
                      <function>clEnqueueMapImage</function> 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.  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>

             <varlistentry>
                <term> <varname> errcode_ret </varname> </term>
                <listitem>
                    <para>
                      Returns an appropriate error code. If <varname>errcode_ret</varname>
                      is NULL, no error code is returned.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
        <para>
          The pointer returned maps a 1D, 2D or 3D region starting at <varname>origin</varname>
          and is at least <varname>region</varname>[0] pixels in size for a 1D image,
          1D image buffer or 1D image array, (<varname>image_row_pitch</varname> *
          <varname>region</varname>[1]) pixels in size for a 2D image or 2D image array, and
          (<varname>image_slice_pitch</varname> * <varname>region</varname>[2]) pixels in size
          for a 3D image. The result of a memory access outside this region is undefined.
        </para>

        <para>
            If the image object is created with <constant>CL_MEM_USE_HOST_PTR</constant>
            set in <varname>mem_flags</varname>, the following will be true:
        </para>

        <itemizedlist mark="disc">
            <listitem>
              The <varname>host_ptr</varname> specified in
              <citerefentry><refentrytitle>clCreateImage</refentrytitle></citerefentry>
              is guaranteed to contain the latest bits in the region being mapped when the
              <function>clEnqueueMapImage</function> command has completed.
            </listitem>

            <listitem>
              The pointer value returned by <function>clEnqueueMapImage</function> will be derived
              from the <varname>host_ptr</varname> specified when the image object is created.
            </listitem>
        </itemizedlist>

        <para>
          Mapped image objects are unmapped using
          <citerefentry><refentrytitle>clEnqueueUnmapMemObject</refentrytitle></citerefentry>.
        </para>

        <para>
          <citerefentry><refentrytitle>clEnqueueMapBuffer</refentrytitle></citerefentry>
          and <function>clEnqueueMapImage</function> increment the mapped count of the memory
          object. The initial mapped count value of a memory object is zero. Multiple calls to
          <citerefentry><refentrytitle>clEnqueueMapBuffer</refentrytitle></citerefentry>
          or <function>clEnqueueMapImage</function> on the same memory object
          will increment this mapped count by appropriate number of calls.
          <function>clEnqueueUnmapMemObject</function> decrements the mapped count of the
          memory object.
        </para>

        <para>
          <citerefentry><refentrytitle>clEnqueueMapBuffer</refentrytitle></citerefentry> and
          <function>clEnqueueMapImage</function> act as synchronization points for a region of
          the buffer object being mapped.
        </para>

        <para>
            If the mipmap extensions are enabled with 
            <citerefentry><refentrytitle>cl_khr_mipmap_image</refentrytitle></citerefentry>, 
            calls to <citerefentry><refentrytitle>clEnqueueReadImage</refentrytitle></citerefentry>, 
            <citerefentry><refentrytitle>clEnqueueWriteImage</refentrytitle></citerefentry> and 
            <function>clEnqueueMapImage</function> 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>

        &accessMappedInc;

    </refsect1>

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

    <refsect1 id="errors"><title>Errors</title>
        <para>
          <function>clEnqueueMapImage</function> will return a pointer to the mapped region.
          The <varname>errcode_ret</varname> is set
          to <errorname>CL_SUCCESS</errorname>.
        </para>

        <para>
          A NULL pointer is returned otherwise with one of the following error values returned
          in <varname>errcode_ret</varname>:
        </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 region being mapped given by
                (<varname>origin</varname>, <varname>origin</varname>+<varname>region</varname>)
                is out of bounds or if values specified in <varname>map_flags</varname> are not valid.
            </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_VALUE</errorname> if <varname>image_row_pitch</varname> is NULL.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_VALUE</errorname> if <varname>image</varname> is a 3D image,
                1D or 2D image array object and <varname>image_slice_pitch</varname> is NULL.
            </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_MAP_FAILURE</errorname> if there is a failure to map the
              requested region into the host address space. This error cannot occur for
              image objects created with <constant>CL_MEM_USE_HOST_PTR</constant> or
              <constant>CL_MEM_ALLOC_HOST_PTR</constant>.
            </listitem>

            <listitem>
              <errorname>CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST</errorname> if the
              map operation is 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>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 OpenCL Device Queries for
              <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>
              is <constant>CL_FALSE</constant>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if <varname>image</varname>
              has been created with <constant>CL_MEM_HOST_WRITE_ONLY</constant> or
              <constant>CL_MEM_HOST_NO_ACCESS</constant> and <constant>CL_MAP_READ</constant>
              is set in <varname>map_flags</varname> or if <varname>image</varname>
              has been created with <constant>CL_MEM_HOST_READ_ONLY</constant> or
              <constant>CL_MEM_HOST_NO_ACCESS</constant> and <constant>CL_MAP_WRITE</constant>
              or <constant>CL_MAP_WRITE_INVALIDATE_REGION</constant> is set in
              <varname>map_flags</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>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if mapping would lead to 
              overlapping regions being mapped for writing.
            </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="clEnqueueMapImage">OpenCL Specification</olink>
        </para>
    </refsect1>

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

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

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

