<?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>         
                clGetMemObjectInfo
            </keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>       
            clGetMemObjectInfo
        </refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2009</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>2</manvolnum>
  
    </refmeta>


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

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

        <refpurpose>          
            Used to get information that is common to all memory objects (buffer and image objects).
        </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>clGetMemObjectInfo</function>
                </funcdef>
					<paramdef><link xlink:href="abstractDataTypes.html">cl_mem</link><parameter>memobj</parameter></paramdef>
					<paramdef><link xlink:href="enums.html#cl_mem_info">cl_mem_info</link><parameter>param_name</parameter></paramdef>
					<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>param_value_size</parameter></paramdef>
					<paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>*param_value</parameter></paramdef>
					<paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>*param_value_size_ret</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>     
    </refsynopsisdiv>


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

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


            <varlistentry>
                <term>
                    <varname>
						memobj
                    </varname>
                </term>

                <listitem>
                    <para> 
						Specifies the memory object being queried.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
						param_name
                    </varname>
                </term>

                <listitem>
                    <para>
						Specifies the information to query. The list of supported <varname>param_name</varname> types and the
						information returned in <varname>param_value</varname> by <function>clGetMemObjectInfo</function> is described in the table below.
                    </para>
					    <informaltable frame="all">
                        <tgroup cols="3" align="left" colsep="1" rowsep="1">
                            <colspec colname="col1" colnum="1" />
                            <colspec colname="col2" colnum="2" />
							<colspec colname="col3" colnum="3" />
                            <thead>
                                <row>
                                    <entry>cl_mem_info</entry>
                                    <entry>Return Type</entry>
									<entry>Info. returned in <varname>param_value</varname></entry>
                                </row>
                            </thead>
                            <tbody>
        
                                <row>
                                    <entry><constant>CL_MEM_TYPE</constant></entry>
                                    <entry>cl_mem_object_type</entry>
									<entry>
										Returns <constant>CL_MEM_OBJECT_BUFFER</constant> if
										<varname>memobj</varname> is created with <citerefentry><refentrytitle>clCreateBuffer</refentrytitle></citerefentry>,
										<constant>CL_MEM_OBJECT_IMAGE2D</constant> if
										<varname>memobj</varname> is created with
										<citerefentry><refentrytitle>clCreateImage2D</refentrytitle></citerefentry> or
										<constant>CL_MEM_OBJECT_IMAGE3D</constant> if
										<varname>memobj</varname> is created with
										<citerefentry><refentrytitle>clCreateImage3D</refentrytitle></citerefentry>.
                                    </entry>
                                </row>
        
                                <row>
                                    <entry><constant>CL_MEM_FLAGS</constant></entry>
									<entry>cl_mem_flags</entry>
                                    <entry>
										Return the <varname>flags</varname> argument value
specified when <varname>memobj</varname> is created with										<citerefentry><refentrytitle>clCreateBuffer</refentrytitle></citerefentry>, 										<citerefentry><refentrytitle>clCreateImage2D</refentrytitle></citerefentry>, or <citerefentry><refentrytitle>clCreateImage3D</refentrytitle></citerefentry>.
									</entry>
                                </row>
        
                                <row>
                                    <entry><constant>CL_MEM_SIZE</constant></entry>
                                    <entry>size_t</entry>
									<entry>
										Return actual size of <varname>memobj</varname> in bytes.
									</entry>
                                </row>
																        
                                <row>
                                    <entry><constant>CL_MEM_HOST_PTR</constant></entry>
                                    <entry>void *</entry>
									<entry>
										Return the <varname>host_ptr</varname> argument value specified when <varname>memobj</varname> is created.
									</entry>
                                </row>								        
                                <row>
                                    <entry><constant>CL_MEM_MAP_COUNT</constant></entry>
                                    <entry>cl_uint</entry>
									<entry>
										Map count. The map count returned should be considered immediately stale. It is unsuitable for general use in applications. This feature is provided for debugging.
									</entry>
                                </row>								        
                                <row>
                                    <entry><constant>CL_MEM_REFERENCE_COUNT</constant></entry>
                                    <entry>cl_uint</entry>
									<entry>
										Return <varname>memobj</varname> reference count. The reference count returned should be considered immediately stale. It is unsuitable for general use in
										applications. This feature is provided for identifying memory leaks.
									</entry>
                                </row>
                                <row>
                                    <entry><constant>CL_MEM_CONTEXT</constant></entry>
                                    <entry>cl_context</entry>
									<entry>
										Return context specified when memory object is created.
									</entry>
                                </row>
                            </tbody>    
                        </tgroup>
                    </informaltable> 
               </listitem>
            </varlistentry>
			
            <varlistentry>
                <term>
                    <varname>
						param_value
					</varname>
				</term>
				
				<listitem>
					<para>
						A pointer to memory where the appropriate result being queried is returned. If <varname>param_value</varname> is NULL, it is ignored.
					</para>
				</listitem>
			</varlistentry>

            <varlistentry>
                <term>
                    <varname>
						param_value_size
					</varname>
				</term>
				
				<listitem>
					<para>
						Used to specify the size in bytes of memory pointed to by <varname>param_value</varname>.
						This size must be greater than or equal to size of return type as described in the table above.
                    </para>

               </listitem>
            </varlistentry>

            <varlistentry>
                <term>
                    <varname>
						param_value_size_ret
					</varname>
				</term>
				
				<listitem>
					<para>
						Returns the actual size in bytes of data being queried by <varname>param_value</varname>. If <varname>param_value_size_ret</varname> is NULL, it is ignored.
					</para>
				</listitem>
			</varlistentry>	

        </variablelist>
    </refsect1>

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


    

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


    <refsect1 id="errors"><title>Errors</title>
        <para>
			<function>clGetMemObjectInfo</function> returns <errorname>CL_SUCCESS</errorname> if the function is executed successfully, returns
<errorname>CL_INVALID_VALUE</errorname> if <varname>param_name</varname> is not valid, or if size in bytes specified by
<varname>param_value_size</varname> is less than the size of return type as described in the table above and <varname>param_value</varname> is not
NULL, and returns <errorname>CL_INVALID_MEM_OBJECT</errorname> if <varname>memobj</varname> is a not a valid image object.
		</para>

    </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="clGetMemObjectInfo">OpenCL Specification</olink>
        </para>
    </refsect1>     


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

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

