<?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">
<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>clFlush</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>       
            clFlush
        </refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2010</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="clFlush">
        <refname>     
            clFlush
        </refname> 

        <refpurpose>          
            Issues all previously queued OpenCL commands in a command-queue to the device associated with the command-queue.
        </refpurpose> 
    </refnamediv> 

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">cl_int</link>
 <function>clFlush</function>
                </funcdef>
                <paramdef><link xlink:href="abstractDataTypes.html">cl_command_queue</link><parameter>command_queue</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>     
    </refsynopsisdiv>


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


    
<!-- ================================ NOTES  -->        
 
    <refsect1 id="notes"><title>Notes</title>
        <para>
            Issues all previously queued OpenCL commands in <varname>command_queue</varname> to the device associated
            with <varname>command_queue</varname>.
        </para>
        <para>
            <function>clFlush</function> only guarantees that all queued commands to <varname>command_queue</varname>
            get issued to the appropriate device. There is no guarantee that they will be complete after
            <function>clFlush</function> returns.
        </para>
        <para>
            Any blocking commands queued in a command-queue perform an implicit flush of the command-queue. 
            These blocking commands are 
                <citerefentry><refentrytitle>clEnqueueReadBuffer</refentrytitle></citerefentry>,  
                <citerefentry><refentrytitle>clEnqueueReadBufferRect</refentrytitle></citerefentry>, or
                <citerefentry><refentrytitle>clEnqueueReadImage</refentrytitle></citerefentry> with 
                <varname>blocking_read</varname> set to <errorname>CL_TRUE</errorname>;
            
                <citerefentry><refentrytitle>clEnqueueWriteBuffer</refentrytitle></citerefentry>,
                <citerefentry><refentrytitle>clEnqueueWriteBufferRect</refentrytitle></citerefentry>, or
                <citerefentry><refentrytitle>clEnqueueWriteImage</refentrytitle></citerefentry> with 
                <varname>blocking_write</varname> set to <errorname>CL_TRUE</errorname>;
            
                <citerefentry><refentrytitle>clEnqueueMapBuffer</refentrytitle></citerefentry> or
                <citerefentry><refentrytitle>clEnqueueMapImage</refentrytitle></citerefentry> with 
                <varname>blocking_map</varname> set to <errorname>CL_TRUE</errorname>;
                
                or <citerefentry><refentrytitle>clWaitForEvents</refentrytitle></citerefentry>.
        </para>
        <para>
            To use event objects that refer to commands enqueued in a command-queue as event objects to
            wait on by commands enqueued in a different command-queue, the application must call a
            <function>clFlush</function> or any blocking commands that perform an implicit flush of the command-queue where
            the commands that refer to these event objects are enqueued.
        </para>
        

    </refsect1>

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

    <refsect1 id="errors"><title>Errors</title>
        <para>
            Returns <errorname>CL_SUCCESS</errorname> if the function call was executed successfully. 
            Otherwise, it returns one of the following:
        </para>
        <itemizedlist mark="disc">
            <listitem>
                <errorname>CL_INVALID_COMMAND_QUEUE</errorname> if <varname>command_queue</varname> is not a valid command-queue. 
            </listitem> 
            <listitem>
                <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there is a failure to allocate resources required by 
                the OpenCL implementation on the host.
            </listitem> 
            <listitem>
                <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to allocate resources required 
                by the OpenCL implementation on the device.
            </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="clFlush">OpenCL Specification</olink>
        </para>
    </refsect1>     


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

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

</refentry>

