<?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 imageFunctionsInc SYSTEM "imageFunctionsInc.xml">
]>
<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>read_imageh (2D, Half)</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>                                    
        <refentrytitle>read_image (2D, Half)</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="read_image2d">             
        <refname>read_imageh (2D, Half)</refname>

        <refpurpose>
            Do an element lookup in the 2D image object, returning half floating-point values.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">half4</link>
                    <function>                   
                        read_imageh
                    </function>
                </funcdef>
                <paramdef><link xlink:href="otherDataTypes.html">image2d_t</link><parameter>image</parameter></paramdef>    
            <paramdef><link xlink:href="sampler_t.html">sampler_t</link><parameter>sampler</parameter></paramdef>
            <paramdef><link xlink:href="vectorDataTypes.html">int2</link><parameter>coord</parameter></paramdef>    
            </funcprototype>
        </funcsynopsis>     

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">half4</link>
                    <function>                   
                        read_imageh
                    </function>
                </funcdef>
                <paramdef><link xlink:href="otherDataTypes.html">image2d_t</link><parameter>image</parameter></paramdef>    
            <paramdef><link xlink:href="sampler_t.html">sampler_t</link><parameter>sampler</parameter></paramdef>
            <paramdef><link xlink:href="vectorDataTypes.html">float2</link><parameter>coord</parameter></paramdef>  
            </funcprototype>
        </funcsynopsis>    
    </refsynopsisdiv>       

<!-- ================================ DESCRIPTION  -->

    <refsect1 id="description"><title>Description</title>
        <para>
        Use the coordinate <emphasis>(x, y)</emphasis> to do an element lookup in the 2D image object specified by <varname>image</varname>.
        </para>     
        <para>      
<function>read_imageh</function> returns half floating-point values in the range [0.0... 1.0] for image objects created with <varname>image_channel_data_type</varname> set to one of the predefined packed formats or CL_UNORM_INT8 or CL_UNORM_INT16.
        </para>     
        <para>  
<function>read_imageh</function> returns half floating-point values in the range [-1.0... 1.0] for image objects created with <varname>image_channel_data_type</varname> set to CL_SNORM_INT8, or CL_SNORM_INT16.
        </para>     
        <para>  
<function>read_imageh</function> returns half floating-point values for image objects created with <varname>image_channel_data_type</varname> set to CL_HALF_FLOAT.
        </para>     
        <para>  
The <function>read_imageh</function> calls that take integer coordinates must use a sampler with filter mode set to CLK_FILTER_NEAREST, normalized coordinates set to CLK_NORMALIZED_COORDS_FALSE and addressing mode set to CLK_ADDRESS_CLAMP_TO_EDGE, CLK_ADDRESS_CLAMP or CLK_ADDRESS_NONE; otherwise the values returned are undefined.
        </para>     
        <para>  
Values returned by <function>read_imageh</function> for image objects with <varname>image_channel_data_type</varname> values not specified in the description above are undefined.
        </para>
    </refsect1>

    
<!-- ================================ NOTES  -->
    <refsect1 id="notes"><title>Notes</title>
        &imageFunctionsInc;
        <para>
            A kernel that uses a sampler with the CL_ADDRESS_CLAMP addressing mode with
multiple images may result in additional samplers being used internally by an implementation. If
the same sampler is used with multiple images called via <function>read_image{f | i | ui}</function>, then it is
possible that an implementation may need to allocate an additional sampler to handle the
different border color values that may be needed depending on the image formats being used.
These implementation allocated samplers will count against the maximum sampler values
supported by the device and given by CL_DEVICE_MAX_SAMPLERS. Enqueuing a kernel that
requires more samplers than the implementation can support will result in a
CL_OUT_OF_RESOURCES error being returned.
        </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="imageFunctions">OpenCL Specification</olink>
        </para>
    </refsect1> 


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

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

