<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }

                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }

                .type {
                        font: normal 16px verdana, sans-serif !important;
                }

                .parameter {
                        font-style: italic;
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }

                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }

        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }

        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }

        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }

        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }

                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }


        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }

</style>
    <title>clEnqueueMapImage</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clEnqueueMapImage" />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="clEnqueueMapImage"></a>
        <h1>
            clEnqueueMapImage
        </h1>
        <p>
            Enqueues a command to map a region of an image object into the host address
            space and returns a pointer to this mapped region.
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2></h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="scalarDataTypes.html" target="pagedisplay">void</a> * <strong class="fsfunc">clEnqueueMapImage </strong>
                (</code>
                <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_command_queue</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">command_queue</var>
                    , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_mem</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">image</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_bool" target="pagedisplay">cl_bool</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">blocking_map</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="enums.html#cl_map_flags" target="pagedisplay">cl_map_flags</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">map_flags</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">* origin</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">* region</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*image_row_pitch</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">size_t</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*image_slice_pitch</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_uint</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">num_events_in_wait_list</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>const
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_event</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*event_wait_list</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="pagedisplay">cl_event</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*event</var>
                    , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                        <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">cl_int</a>
                         <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">*errcode_ret</var>
                    <code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="parameters"></a>
        <h2>Parameters</h2>
        <div class="variablelist">
          <dl class="variablelist">
            <dt>
              <span class="term"> <code class="varname"> command_queue </code> </span>
            </dt>
            <dd>
              <p>
                        Must be a valid host command-queue.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> image </code> </span>
            </dt>
            <dd>
              <p>
                      A valid image object. The OpenCL context associated with
                      <code class="varname">command_queue</code> and <code class="varname">image</code> must be
                      the same.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> blocking_map </code> </span>
            </dt>
            <dd>
              <p>
                      Indicates if the map operation is <code class="varname">blocking</code> or
                      <code class="varname">non-blocking</code>.
                    </p>
              <p>
                      If <code class="varname">blocking_map</code> is <code class="constant">CL_TRUE</code>,
                      <code class="function">clEnqueueMapImage</code> does not return until the specified
                      region in <code class="varname">image</code> is mapped into the host address space
                      and the application can access the contents of the mapped region using
                      the pointer returned by <code class="function">clEnqueueMapImage</code>.
                    </p>
              <p>
                      If <code class="varname">blocking_map</code> is <code class="constant">CL_FALSE</code>
                      i.e. map operation is non-blocking, the pointer to the mapped region
                      returned by <code class="function">clEnqueueMapImage</code> cannot be used until
                      the map command has completed. The <code class="varname">event</code> 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 <code class="function">clEnqueueMapImage</code>.
                    </p>
            </dd>
            <dt>
              <span class="term">
                <code class="varname">map_flags</code>
              </span>
            </dt>
            <dd>
              <p>
                        A bit-bield with the following supported values.
                    </p>
              <div class="informaltable">
                <table border="1">
                  <colgroup>
                    <col align="left" class="col1" />
                    <col align="left" class="col2" />
                  </colgroup>
                  <thead>
                    <tr>
                      <th align="left">cl_map_flags</th>
                      <th align="left">Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MAP_READ</code>
                      </td>
                      <td align="left">
                    <p>
                        This flag specifies that the region being mapped in the memory
                        object is being mapped for reading.
                    </p>

                    <p>
                        The pointer returned by 
                        <code class="function">clEnqueueMap{Buffer|Image}</code>
                        is guaranteed to contain
                        the latest bits in the region being
                        mapped when the 
                        <code class="function">clEnqueueMap{Buffer|Image}</code>
                        command has completed.
                    </p>
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MAP_WRITE</code>
                      </td>
                      <td align="left">
                    <p>
                        This flag specifies that the region being mapped in the memory
                        object is being mapped for writing.
                    </p>

                    <p>
                        The pointer returned by 
                        <code class="function">clEnqueueMap{Buffer|Image}</code>
                        is guaranteed to contain the latest bits in
                        the region being mapped when the 
                        <code class="function">clEnqueueMap{Buffer|Image}</code>
                        command has completed.
                    </p>
                </td>
                    </tr>
                    <tr>
                      <td align="left">
                        <code class="constant">CL_MAP_WRITE_INVALIDATE_REGION</code>
                      </td>
                      <td align="left">
                    <p>
                        This flag specifies that the region being mapped in the memory
                        object is being mapped for writing.
                    </p>

                    <p>
                        The contents of the region being mapped are to be discarded.
                        This is typically the case
                        when the region being mapped is overwritten by the host. This
                        flag allows the implementation
                        to no longer guarantee that the pointer returned by
                        <code class="function">clEnqueueMap{Buffer|Image}</code>
                        contains the latest bits in the region being
                        mapped which can be a significant performance enhancement.
                    </p>

                    <p>
                        <code class="constant">CL_MAP_READ</code> or <code class="constant">CL_MAP_WRITE</code>
                        and <code class="constant"> CL_MAP_WRITE_INVALIDATE_REGION</code>
                        are mutually exclusive.
                    </p>
                </td>
                    </tr>
                  </tbody>
                </table>
              </div>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> origin </code> </span>
            </dt>
            <dd>
              <p>
                      Defines the (<code class="varname">x, y, z</code>) offset in pixels in the 1D, 
                      2D or 3D image, the (<code class="varname">x, y</code>) offset and the image index 
                      in the 2D image array or the (<code class="varname">x</code>) offset
                      and the image index in the 1D image array.  If <code class="varname">image</code>
                      is a 2D image object, <code class="varname">origin</code>[2] must be 0.
                      If <code class="varname">image</code> is a 1D image or 1D image buffer object,
                      <code class="varname">origin</code>[1] and <code class="varname">origin</code>[2]
                      must be 0.  If <code class="varname">image</code> is a 1D image array object,
                      <code class="varname">origin</code>[2] must be 0.  If <code class="varname">image</code>
                      is a 1D image array object, <code class="varname">origin</code>[1] describes the
                      image index in the 1D image array. If <code class="varname">image</code> is a 2D
                      image array object, <code class="varname">origin</code>[2] describes the image
                      index in the 2D image array.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> region </code> </span>
            </dt>
            <dd>
              <p>
                      Defines the (<code class="varname">width</code>, <code class="varname">height</code>, 
                      <code class="varname">depth</code>) in pixels of the 1D, 2D or 3D rectangle,
                      the (<code class="varname">width</code>, <code class="varname">height</code>) in 
                      pixels of the 2D rectangle and the number of images of
                      a 2D image array or the (<code class="varname">width</code>) in pixels of the 1D rectangle and the number
                      of images of a 1D image array.  If <code class="varname">image</code> is a 2D image
                      object, <code class="varname">region</code>[2] must be 1. If <code class="varname">image</code>
                      is a 1D image or 1D image buffer object, <code class="varname">region</code>[1]
                      and <code class="varname">region</code>[2] must be 1. If <code class="varname">image</code>
                      is a 1D image array object, <code class="varname">region</code>[2] must be 1.
                      The values in <code class="varname">region</code> cannot be 0.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> image_row_pitch </code> </span>
            </dt>
            <dd>
              <p>
                        Returns the scan-line pitch in bytes for the mapped region. 
                        This must be a non-NULL value.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> image_slice_pitch </code> </span>
            </dt>
            <dd>
              <p>
                      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, <code class="varname">image_slice_pitch</code>
                      must be a non-NULL value.
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">
                        event_wait_list
                    ,</code>
                    <code class="varname">
                        num_events_in_wait_list
                    </code>
                </span>
            </dt>
            <dd>
              <p>
                      Specify events that need to complete before
                      <code class="function">clEnqueueMapImage</code> can be executed. If
                      <code class="varname">event_wait_list</code> is NULL, then
                      <code class="function">clEnqueueMapImage</code> does not wait on any
                      event to complete.  If <code class="varname">event_wait_list</code> is
                      NULL,  <code class="varname">num_events_in_wait_list</code> must be 0. If
                      <code class="varname">event_wait_list</code> is not NULL, the list of events
                      pointed to by <code class="varname">event_wait_list</code> must be valid
                      and <code class="varname">num_events_in_wait_list</code> must be greater
                      than 0. The events specified in <code class="varname">event_wait_list</code>
                      act as synchronization points. The context associated with events in
                      <code class="varname">event_wait_list</code> and <code class="varname">command_queue</code> must
                      be the same. The memory associated with <code class="varname">event_wait_list</code>
                      can be reused or freed after the function returns.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> event </code> </span>
            </dt>
            <dd>
              <p>
                      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.  <code class="varname">event</code> 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
                      <code class="varname">event_wait_list</code> and the <code class="varname">event</code>
                      arguments are not NULL, the <code class="varname">event</code> argument should not
                      refer to an element of the <code class="varname">event_wait_list</code> array.
                    </p>
            </dd>
            <dt>
              <span class="term"> <code class="varname"> errcode_ret </code> </span>
            </dt>
            <dd>
              <p>
                      Returns an appropriate error code. If <code class="varname">errcode_ret</code>
                      is NULL, no error code is returned.
                    </p>
            </dd>
          </dl>
        </div>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          The pointer returned maps a 1D, 2D or 3D region starting at <code class="varname">origin</code>
          and is at least <code class="varname">region</code>[0] pixels in size for a 1D image,
          1D image buffer or 1D image array, (<code class="varname">image_row_pitch</code> *
          <code class="varname">region</code>[1]) pixels in size for a 2D image or 2D image array, and
          (<code class="varname">image_slice_pitch</code> * <code class="varname">region</code>[2]) pixels in size
          for a 3D image. The result of a memory access outside this region is undefined.
        </p>
        <p>
            If the image object is created with <code class="constant">CL_MEM_USE_HOST_PTR</code>
            set in <code class="varname">mem_flags</code>, the following will be true:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc">
              The <code class="varname">host_ptr</code> specified in
              <a class="citerefentry" href="clCreateImage.html"><span class="citerefentry"><span class="refentrytitle">clCreateImage</span></span></a>
              is guaranteed to contain the latest bits in the region being mapped when the
              <code class="function">clEnqueueMapImage</code> command has completed.
            </li>
            <li class="listitem" style="list-style-type: disc">
              The pointer value returned by <code class="function">clEnqueueMapImage</code> will be derived
              from the <code class="varname">host_ptr</code> specified when the image object is created.
            </li>
          </ul>
        </div>
        <p>
          Mapped image objects are unmapped using
          <a class="citerefentry" href="clEnqueueUnmapMemObject.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueUnmapMemObject</span></span></a>.
        </p>
        <p>
          <a class="citerefentry" href="clEnqueueMapBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapBuffer</span></span></a>
          and <code class="function">clEnqueueMapImage</code> increment the mapped count of the memory
          object. The initial mapped count value of a memory object is zero. Multiple calls to
          <a class="citerefentry" href="clEnqueueMapBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapBuffer</span></span></a>
          or <code class="function">clEnqueueMapImage</code> on the same memory object
          will increment this mapped count by appropriate number of calls.
          <code class="function">clEnqueueUnmapMemObject</code> decrements the mapped count of the
          memory object.
        </p>
        <p>
          <a class="citerefentry" href="clEnqueueMapBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapBuffer</span></span></a> and
          <code class="function">clEnqueueMapImage</code> act as synchronization points for a region of
          the buffer object being mapped.
        </p>
        <p>
            If the mipmap extensions are enabled with 
            <a class="citerefentry" href="cl_khr_mipmap_image.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_mipmap_image</span></span></a>, 
            calls to <a class="citerefentry" href="clEnqueueReadImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueReadImage</span></span></a>, 
            <a class="citerefentry" href="clEnqueueWriteImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueWriteImage</span></span></a> and 
            <code class="function">clEnqueueMapImage</code> 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, <code class="varname">origin</code>[1] 
            specifies the mip-level to use. If image argument is a 1D image array, 
            <code class="varname">origin</code>[2] specifies the mip-level to use. 
            If image argument is a 2D image, <code class="varname">origin</code>[3] 
            specifies the mip-level to use. 
            If image argument is a 2D image array or a 3D image, 
            <code class="varname">origin</code>[3] specifies the mip-level to use.
        </p>
        <h4><a id="id-1.6.9"></a>Accessing mapped regions of a memory object</h4>
        <p>
      This section describes the behavior of OpenCL commands that access 
      mapped regions of a memory object.
    </p>
        <p>
        The contents of the region of a memory object and associated memory objects 
        (sub-buffer objects or 1D image buffer objects that overlap this region) mapped 
        for writing (i.e. <code class="constant">CL_MAP_WRITE</code> or 
        <code class="constant">CL_MAP_WRITE_INVALIDATE_REGION</code> is set in <code class="varname">map_flags</code> 
        argument to <a class="citerefentry" href="clEnqueueMapBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapBuffer</span></span></a> 
        or <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a>) are 
        considered to be undefined until this region is unmapped.
    </p>
        <p>
        Multiple commands in command-queues can map a region or overlapping regions of a memory
        object and associated memory objects (sub-buffer objects or 1D image buffer objects that
        overlap this region) for reading 
        (i.e. <code class="varname">map_flags</code> = <code class="constant">CL_MAP_READ</code>). 
        The contents of the regions of a memory object mapped for reading can also be read by kernels 
        and other OpenCL commands (such as 
        <a class="citerefentry" href="clEnqueueCopyBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueCopyBuffer</span></span></a>) 
        executing on a device(s).
    </p>
        <p>
        Mapping (and unmapping) overlapped regions in a memory object and/or associated memory
        objects (sub-buffer objects or 1D image buffer objects that overlap this region) for writing 
        is an error and will result in <code class="constant">CL_INVALID_OPERATION</code> error returned by 
        <a class="citerefentry" href="clEnqueueMapBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapBuffer</span></span></a> 
        or <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a>.
    </p>
        <p>
        If a memory object is currently mapped for writing, the application must ensure that the memory
        object is unmapped before any enqueued kernels or commands that read from or write to this
        memory object or any of its associated memory objects (sub-buffer or 1D image buffer objects)
        or its parent object (if the memory object is a sub-buffer or 1D image buffer object) begin
        execution; otherwise the behavior is undefined.
    </p>
        <p>
        If a memory object is currently mapped for reading, the application must ensure that the memory
        object is unmapped before any enqueued kernels or commands that write to this memory object
        or any of its associated memory objects (sub-buffer or 1D image buffer objects) or its parent
        object (if the memory object is a sub-buffer or 1D image buffer object) begin execution;
        otherwise the behavior is undefined.
    </p>
        <p>
        A memory object is considered as mapped if there are one or more active mappings for the 
        memory object irrespective of whether the mapped regions span the entire memory object.
    </p>
        <p>
        Accessing the contents of the memory region referred to by the mapped pointer that has 
        been unmapped is undefined.
    </p>
        <p>
        The mapped pointer returned by 
        <a class="citerefentry" href="clEnqueueMapBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapBuffer</span></span></a> 
        or <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a> can be used as
        <code class="varname">ptr</code> argument value to 
        <a class="citerefentry" href="clEnqueueReadBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueReadBuffer</span></span></a>, 
        <a class="citerefentry" href="clEnqueueWriteBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueWriteBuffer</span></span></a>, 
        <a class="citerefentry" href="clEnqueueReadBufferRect.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueReadBufferRect</span></span></a>, 
        <a class="citerefentry" href="clEnqueueWriteBufferRect.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueWriteBufferRect</span></span></a>,
        <a class="citerefentry" href="clEnqueueReadImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueReadImage</span></span></a>, and 
        <a class="citerefentry" href="clEnqueueWriteImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueWriteImage</span></span></a>, 
        provided the rules described above are adhered to.
    </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
          <code class="function">clEnqueueMapImage</code> will return a pointer to the mapped region.
          The <code class="varname">errcode_ret</code> is set
          to <span class="errorname">CL_SUCCESS</span>.
        </p>
        <p>
          A NULL pointer is returned otherwise with one of the following error values returned
          in <code class="varname">errcode_ret</code>:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_COMMAND_QUEUE</span> if <code class="varname">command_queue</code>
                is not a valid host command-queue.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_CONTEXT</span> if the context associated with
                <code class="varname">command_queue</code> and <code class="varname">image</code>
                are not the same or if the context associated with <code class="varname">command_queue</code>
                and events in <code class="varname">event_wait_list</code> are not the same.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_MEM_OBJECT</span> if <code class="varname">image</code> 
                is not a valid image object.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if region being mapped given by
                (<code class="varname">origin</code>, <code class="varname">origin</code>+<code class="varname">region</code>)
                is out of bounds or if values specified in <code class="varname">map_flags</code> are not valid.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if values in <code class="varname">origin</code> and
                <code class="varname">region</code> do not follow rules described in the argument description
                for <code class="varname">origin</code> and <code class="varname">region</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if <code class="varname">image_row_pitch</code> is NULL.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_VALUE</span> if <code class="varname">image</code> is a 3D image,
                1D or 2D image array object and <code class="varname">image_slice_pitch</code> is NULL.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_EVENT_WAIT_LIST</span>
              if <code class="varname">event_wait_list</code> is NULL and
              <code class="varname">num_events_in_wait_list</code> &gt; 0,
              or <code class="varname">event_wait_list</code> is not NULL and
              <code class="varname">num_events_in_wait_list</code> is 0, or if event objects in
              <code class="varname">event_wait_list</code> are not valid events.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_IMAGE_SIZE</span> if image dimensions (image width,
              height, specified or compute row and/or slice pitch) for <code class="varname">image</code>
              are not supported by device associated with <code class="varname">queue</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_IMAGE_FORMAT_NOT_SUPPORTED</span> if image format (image channel
              order and data type) for <code class="varname">image</code> are not supported by device
              associated with <code class="varname">queue</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_MAP_FAILURE</span> if there is a failure to map the
              requested region into the host address space. This error cannot occur for
              image objects created with <code class="constant">CL_MEM_USE_HOST_PTR</code> or
              <code class="constant">CL_MEM_ALLOC_HOST_PTR</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST</span> if the
              map operation is blocking and the execution status of any of the events in
              <code class="varname">event_wait_list</code> is a negative integer value.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_MEM_OBJECT_ALLOCATION_FAILURE</span> if there is a failure to
              allocate memory for data store associated with <code class="varname">image</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if the device
              associated with <code class="varname">command_queue</code> does not support
              images (i.e. <code class="constant">CL_DEVICE_IMAGE_SUPPORT</code>
              specified in the table of OpenCL Device Queries for
              <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>
              is <code class="constant">CL_FALSE</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if <code class="varname">image</code>
              has been created with <code class="constant">CL_MEM_HOST_WRITE_ONLY</code> or
              <code class="constant">CL_MEM_HOST_NO_ACCESS</code> and <code class="constant">CL_MAP_READ</code>
              is set in <code class="varname">map_flags</code> or if <code class="varname">image</code>
              has been created with <code class="constant">CL_MEM_HOST_READ_ONLY</code> or
              <code class="constant">CL_MEM_HOST_NO_ACCESS</code> and <code class="constant">CL_MAP_WRITE</code>
              or <code class="constant">CL_MAP_WRITE_INVALIDATE_REGION</code> is set in
              <code class="varname">map_flags</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_RESOURCES</span> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_OUT_OF_HOST_MEMORY</span> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </li>
          </ul>
        </div>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />

            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.0.pdf#page=143" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="clEnqueueMapBuffer.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapBuffer</span></span></a>,
            <a class="citerefentry" href="clEnqueueUnmapMemObject.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueUnmapMemObject</span></span></a>,
            <a class="citerefentry" href="clEnqueueSVMMap.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueSVMMap</span></span></a>,
            <a class="citerefentry" href="cl_khr_mipmap_image.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_mipmap_image</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2013 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.
</div>
    </div>
  </body>
</html>
