<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd" [
<!ENTITY map_flags_Inc SYSTEM "map_flags_Inc.xml">
<!ENTITY accessMappedInc SYSTEM "accessMappedInc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>clEnqueueMapBuffer</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>
            clEnqueueMapBuffer
        </refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2013</year>
                <holder>The Khronos Group Inc.
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>3</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="clEnqueueMapBuffer">
        <refname>
            clEnqueueMapBuffer
        </refname>

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

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">void</link> * <function>clEnqueueMapBuffer</function>
                </funcdef>
                    <paramdef><link xlink:href="abstractDataTypes.html">cl_command_queue</link><parameter>command_queue</parameter></paramdef>
                    <paramdef><link xlink:href="abstractDataTypes.html">cl_mem</link><parameter>buffer</parameter></paramdef>
                    <paramdef><link xlink:href="enums.html#cl_bool">cl_bool</link><parameter>blocking_map</parameter></paramdef>
                    <paramdef><link xlink:href="enums.html#cl_map_flags">cl_map_flags</link><parameter>map_flags</parameter></paramdef>
                    <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>offset</parameter></paramdef>
                    <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>size</parameter></paramdef>
                    <paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>num_events_in_wait_list</parameter></paramdef>
                    <paramdef>const <link xlink:href="abstractDataTypes.html">cl_event</link><parameter>*event_wait_list</parameter></paramdef>
                    <paramdef><link xlink:href="abstractDataTypes.html">cl_event</link><parameter>*event</parameter></paramdef>
                    <paramdef><link xlink:href="scalarDataTypes.html">cl_int</link><parameter>*errcode_ret</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

<!-- ================================ PARAMETERS -->

    <refsect1 id="parameters">
        <title>Parameters</title>
        <variablelist>

            <varlistentry>
                <term> <varname> command_queue </varname> </term>
                <listitem>
                    <para>
                        Must be a valid host command-queue.
                    </para>
               </listitem>
            </varlistentry>

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

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

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

<!-- ================================ PARAMETER TABLE (OPTIONAL) -->

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

                    &map_flags_Inc;

                </listitem>
            </varlistentry>

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

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

            <varlistentry>
                <term>
                    <varname>
                        offset,
                    </varname>
                    <varname>
                        size
                    </varname>
                </term>

                <listitem>
                    <para>
                        The offset in bytes and the size of the region in the buffer object that is being mapped.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
                        event_wait_list,
                    </varname>
                    <varname>
                        num_events_in_wait_list
                    </varname>
                </term>

                <listitem>
                    <para>
                      Specify events that need to complete before this particular
                      command can be executed. If <varname>event_wait_list</varname>
                      is NULL, then this particular command does not wait on any
                      event to complete. If <varname>event_wait_list</varname> is
                      NULL, <varname>num_events_in_wait_list</varname> must be 0. If
                      <varname>event_wait_list</varname> is not NULL, the list of events
                      pointed to by <varname>event_wait_list</varname> must be valid
                      and <varname>num_events_in_wait_list</varname> must be greater
                      than 0. The events specified in <varname>event_wait_list</varname>
                      act as synchronization points. The context associated with events in
                      <varname>event_wait_list</varname> and <varname>command_queue</varname> must
                      be the same.  The memory associated with <varname>event_wait_list</varname>
                      can be reused or freed after the function returns.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term> <varname> event </varname> </term>
                <listitem>
                    <para>
                      Returns an event object that identifies this particular copy command
                      and can be used to query or queue a wait for this particular command
                      to complete. <varname>event</varname> can be NULL in which case
                      it will not be possible for the application to query the status of
                      this command or queue a wait for this command to complete.  If the
                      <varname>event_wait_list</varname> and the <varname>event</varname>
                      arguments are not NULL, the <varname>event</varname> argument should not
                      refer to an element of the <varname>event_wait_list</varname> array.
                    </para>
                </listitem>
            </varlistentry>

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

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

    <refsect1 id="notes"><title>Notes</title>
        <para>
          The returned pointer maps a region starting at <varname>offset</varname> and is at
          least <varname>size</varname> bytes in size. The result of a memory access outside
          this region is undefined.
        </para>

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

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

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

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

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

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

        &accessMappedInc;

    </refsect1>

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

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

        <para>
          A NULL pointer is returned otherwise with one of the following error values returned
          in <varname>errcode_ret</varname>:
        </para>

        <itemizedlist mark="disc">
            <listitem>
                <errorname>CL_INVALID_COMMAND_QUEUE</errorname> if <varname>command_queue</varname>
                is not a valid host command-queue.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_CONTEXT</errorname> if the context associated with
                <varname>command_queue</varname> and <varname>buffer</varname>
                are not the same or if the context associated with <varname>command_queue</varname>
                and events in <varname>event_wait_list</varname> are not the same.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_MEM_OBJECT</errorname> if 
                <varname>buffer</varname> is not a valid image object.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_VALUE</errorname> if region being mapped given by
                (<varname>offset</varname>, <varname>size</varname>)
                is out of bounds or if <varname>size</varname> is 0 or values specified in
                <varname>map_flags</varname> are not valid.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_EVENT_WAIT_LIST</errorname>
              if <varname>event_wait_list</varname> is NULL and
              <varname>num_events_in_wait_list</varname> &gt; 0,
              or <varname>event_wait_list</varname> is not NULL and
              <varname>num_events_in_wait_list</varname> is 0, or if event objects in
              <varname>event_wait_list</varname> are not valid events.
            </listitem>

            <listitem>
              <errorname>CL_MISALIGNED_SUB_BUFFER_OFFSET</errorname> if
              <varname>buffer</varname> is a sub-buffer object and <varname>offset</varname>
              specified when the sub-buffer object is created is not aligned to
              <constant>CL_DEVICE_MEM_BASE_ADDR_ALIGN</constant> value for device associated
              with <varname>queue</varname>.
            </listitem>

            <listitem>
              <errorname>CL_MAP_FAILURE</errorname> if there is a failure to map the
              requested region into the host address space. This error cannot occur for
              buffer objects created with <constant>CL_MEM_USE_HOST_PTR</constant> or
              <constant>CL_MEM_ALLOC_HOST_PTR</constant>.
            </listitem>

            <listitem>
              <errorname>CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST</errorname> if the
              map operation is blocking and the execution status of any of the events in
              <varname>event_wait_list</varname> is a negative integer value.
            </listitem>

            <listitem>
              <errorname>CL_MEM_OBJECT_ALLOCATION_FAILURE</errorname> if there is a failure to
              allocate memory for data store associated with <varname>buffer</varname>.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_OPERATION</errorname> if <varname>buffer</varname>
              has been created with <constant>CL_MEM_HOST_WRITE_ONLY</constant> or
              <constant>CL_MEM_HOST_NO_ACCESS</constant> and <constant>CL_MAP_READ</constant>
              is set in <varname>map_flags</varname> or if <varname>buffer</varname>
              has been created with <constant>CL_MEM_HOST_READ_ONL</constant> or
              <constant>CL_MEM_HOST_NO_ACCESS</constant> and <constant>CL_MAP_WRITE</constant>
              or <constant>CL_MAP_WRITE_INVALIDATE_REGION</constant> is set in
              <varname>map_flags</varname>.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the device.
            </listitem>

            <listitem>
              <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there is a failure to allocate
              resources required by the OpenCL implementation on the host.
            </listitem>
        </itemizedlist>
    </refsect1>

<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->

<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>

            <olink uri="clEnqueueMapBuffer">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>clEnqueueMapImage</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueUnmapMemObject</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clEnqueueSVMMap</refentrytitle></citerefentry>
        </para>
    </refsect1>

<!-- ================================ COPYRIGHT  -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
        <para />
    </refsect3>

<!-- 25-Dec-2013, rev. 19 -->
</refentry>

