<?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>clEnqueueMapBuffer</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="clEnqueueMapBuffer" />
  </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="clEnqueueMapBuffer"></a>
        <h1>
            clEnqueueMapBuffer
        </h1>
        <p>
            Enqueues a command to map a region of the buffer object given by <code xmlns="http://www.w3.org/1999/xhtml" class="varname">buffer</code>
            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">clEnqueueMapBuffer</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">buffer</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><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">offset</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">size</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 command-queue.
                    </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">clEnqueueMapBuffer</code> does not return until the specified
                      region in <code class="varname">buffer</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">clEnqueueMapBuffer</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">clEnqueueMapBuffer</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">clEnqueueMapBuffer</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">clEnqueueMapBuffer</code> or
                                            <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a>
                                            is guaranteed to contain
                                            the latest bits in the region being
                                            mapped when the <code class="function">clEnqueueMapBuffer</code> or
                                            <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a>
                                            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">clEnqueueMapBuffer</code> or
                                           <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a>
                                            is guaranteed to contain the latest bits in
                                            the region being mapped when the <code class="function">clEnqueueMapBuffer</code> or
                                            <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a>
                                            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">clEnqueueMapBuffer</code> or
                                            <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a>
                                            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"> buffer </code> </span>
            </dt>
            <dd>
              <p>
                        A valid buffer object. The OpenCL context associated with <code class="varname">command_queue</code>
                        and <code class="varname">buffer</code> must be the same.
                    </p>
            </dd>
            <dt>
              <span class="term">
                    <code class="varname">
                        offset,
                    </code>
                    <code class="varname">
                        size
                    </code>
                </span>
            </dt>
            <dd>
              <p>
                        The offset in bytes and the size of the region in the buffer object that is being mapped.
                    </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 this particular
                      command can be executed. If <code class="varname">event_wait_list</code>
                      is NULL, then this particular command 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 returned pointer maps a region starting at <code class="varname">offset</code> and is at
          least <code class="varname">size</code> bytes in size. The result of a memory access outside
          this region is undefined.
        </p>
        <p>
          If the buffer 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="clCreateBuffer.html"><span class="citerefentry"><span class="refentrytitle">clCreateBuffer</span></span></a>
              is guaranteed to contain the latest bits in the region being mapped when the
              <code class="function">clEnqueueMapBuffer</code> command has completed.
            </li>
            <li class="listitem" style="list-style-type: disc">
              The pointer value returned by <code class="function">clEnqueueMapBuffer</code> will be derived
              from the <code class="varname">host_ptr</code> specified when the buffer object is created.
            </li>
          </ul>
        </div>
        <p>
          Mapped buffer objects are unmapped using
          <a class="citerefentry" href="clEnqueueUnmapMemObject.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueUnmapMemObject</span></span></a>.
        </p>
        <p>
           <code class="function">clEnqueueMapBuffer</code>
          and <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a>
          increment the mapped count of the memory object. The initial mapped count value of a
          memory object is zero. Multiple calls to <code class="function">clEnqueueMapBuffer</code> or
          <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a> on the
          same memory object will increment this mapped count by appropriate number of calls.
          <a class="citerefentry" href="clEnqueueUnmapMemObject.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueUnmapMemObject</span></span></a>
          decrements the mapped count of the memory object.
        </p>
        <p>
           <code class="function">clEnqueueMapBuffer</code>
          and <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a>
          act as synchronization points for a region of the buffer object being mapped.
        </p>
      </div>
      <div class="refsect1">
        <a id="errors"></a>
        <h2>Errors</h2>
        <p>
          <code class="function">clEnqueueMapBuffer</code> will return a pointer to the mapped region
          if the function is executed successfully.  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 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">offset</code>, <code class="varname">size</code>)
                is out of bounds or if <code class="varname">size</code> is 0 or 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_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_MISALIGNED_SUB_BUFFER_OFFSET</span> if
              <code class="varname">buffer</code> is a sub-buffer object and <code class="varname">offset</code>
              specified when the sub-buffer object is created is not aligned to
              <code class="constant">CL_DEVICE_MEM_BASE_ADDR_ALIGN</code> value for 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">buffer</code>.
            </li>
            <li class="listitem" style="list-style-type: disc"><span class="errorname">CL_INVALID_OPERATION</span> if <code class="varname">buffer</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">buffer</code>
              has been created with <code class="constant">CL_MEM_HOST_READ_ONL</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="http://www.khronos.org/registry/cl/specs/opencl-1.2.pdf#page=86" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="clEnqueueMapImage.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueMapImage</span></span></a>,
            <a class="citerefentry" href="clEnqueueUnmapMemObject.html"><span class="citerefentry"><span class="refentrytitle">clEnqueueUnmapMemObject</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-2011 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>
