<?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="_top">void</a> * <strong class="fsfunc">clEnqueueMapBuffer</strong>
                (</code>
                <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="abstractDataTypes.html" target="_top">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="_top">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="_top">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="_top">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="_top">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="_top">size_t</a> <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">cb</var>, </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td><a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="_top">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="_top">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="_top">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="_top">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> can be mapped.
                    </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>
                        Is a bit-field and can be set to <code class="constant">CL_MAP_READ</code> to indicate that the region specified by (<code class="varname">offset</code>, <code class="varname">cb</code>) in the buffer object is being mapped for reading, and/or <code class="constant">CL_MAP_WRITE</code> to indicate that the region specified by (<code class="varname">offset</code>, <code class="varname">cb</code>) in the buffer object is being mapped for writing.
                    </p>
            </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">
                        cb
                    </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.
                    </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.         
                    </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>
    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 <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; and 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.</p>
        <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>
        The contents of the regions of a memory object mapped for writing (i.e. <code class="constant">CL_MAP_WRITE</code> is set in <code class="varname">map_flags</code> argument to <code class="function">clEnqueueMapBuffer</code> 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. Reads and writes by a kernel executing on a device to a memory region(s) mapped for writing are undefined.
        </p>
        <p>
Multiple command-queues can map a region or overlapping regions of a memory object 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 executing on a device(s). The behavior of writes by a kernel executing on a device to a mapped region of a memory object is undefined. Mapping (and unmapping) overlapped regions of a buffer or image memory object for writing is undefined.
        </p>
        <p>
The behavior of OpenCL function calls that enqueue commands that write or copy to regions of a
memory object that are mapped is undefined.
        </p>
        <p>
            The pointer returned maps a region starting at <code class="varname">offset</code> and is at least <code class="varname">cb</code> bytes in size. The result of a memory access outside this region is undefined.
        </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">buffer</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">buffer</code> is not a valid buffer 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">cb</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_EVENT_WAIT_LIST</span> if <code class="varname">event_wait_list</code> is NULL and
                <code class="varname">num_events_in_wait_list</code> greater than 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_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_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 buffer 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_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_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.1.pdf#page=71" 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-2010 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>
