<?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">
<!ENTITY imageMappingInc SYSTEM "imageMappingInc.xml">
<!ENTITY imageMipmapFunctions2DInc SYSTEM "imageMipmapFunctions2DInc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>read_imagef (2D)</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>read_imagef (2D)</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="read_image2d">
        <refname>read_imagef (2D)</refname>

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

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </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">float4</link>
                    <function>
                        read_imagef
                    </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>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_t</link>
                    <parameter>image</parameter>
                </paramdef>
               <paramdef>
                    <link xlink:href="vectorDataTypes.html">int2</link>
                    <parameter>coord</parameter>
                </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_t</link>
                    <parameter>image</parameter>
                </paramdef>
               <paramdef>
                    <link xlink:href="vectorDataTypes.html">int4</link>
                    <parameter>coord</parameter>
                </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_depth_t</link>
                    <parameter>image</parameter>
                </paramdef>
               <paramdef>
                    <link xlink:href="vectorDataTypes.html">int2</link>
                    <parameter>coord</parameter>
                </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_depth_t</link>
                    <parameter>image</parameter>
                </paramdef>
               <paramdef>
                    <link xlink:href="vectorDataTypes.html">int4</link>
                    <parameter>coord</parameter>
                </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_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">int4</link>
                <parameter>coord</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_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">float4</link>
                <parameter>coord</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">float</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_depth_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="scalarDataTypes.html">float</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_depth_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>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">float</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_depth_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">int4</link>
                <parameter>coord</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">float</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_depth_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">float4</link>
                <parameter>coord</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <bridgehead>Functions added with mipmap support enabled by extension 
        <code>cl_khr_mipmap_image</code>:</bridgehead>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </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>
            <paramdef>
                <link xlink:href="scalarDataTypes.html">float</link>
                <parameter>lod</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">float</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_depth_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>
            <paramdef>
                <link xlink:href="scalarDataTypes.html">float</link>
                <parameter>lod</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </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>
            <paramdef>
                <link xlink:href="vectorDataTypes.html">float2</link>
                <parameter>gradient_x</parameter>
            </paramdef>
            <paramdef>
                <link xlink:href="vectorDataTypes.html">float2</link>
                <parameter>gradient_y</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">float</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_depth_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>
            <paramdef>
                <link xlink:href="vectorDataTypes.html">float2</link>
                <parameter>gradient_x</parameter>
            </paramdef>
            <paramdef>
                <link xlink:href="vectorDataTypes.html">float2</link>
                <parameter>gradient_y</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_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">float4</link>
                <parameter>coord</parameter>
            </paramdef>
            <paramdef>
                <link xlink:href="scalarDataTypes.html">float</link>
                <parameter>lod</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">float</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_depth_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">float4</link>
                <parameter>coord</parameter>
            </paramdef>
            <paramdef>
                <link xlink:href="scalarDataTypes.html">float</link>
                <parameter>lod</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_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">float4</link>
                <parameter>coord</parameter>
            </paramdef>
            <paramdef>
                <link xlink:href="vectorDataTypes.html">float2</link>
                <parameter>gradient_x</parameter>
            </paramdef>
            <paramdef>
                <link xlink:href="vectorDataTypes.html">float2</link>
                <parameter>gradient_y</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">float</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_depth_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">float4</link>
                <parameter>coord</parameter>
            </paramdef>
            <paramdef>
                <link xlink:href="vectorDataTypes.html">float2</link>
                <parameter>gradient_x</parameter>
            </paramdef>
            <paramdef>
                <link xlink:href="vectorDataTypes.html">float2</link>
                <parameter>gradient_y</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>


        <bridgehead>Functions added with MSAA support enabled by extension 
        <code>cl_khr_gl_msaa_sharing</code>:</bridgehead>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_msaa_t</link>
                    <parameter>image</parameter>
                </paramdef>
                <paramdef>
                    <link xlink:href="vectorDataTypes.html">int2</link>
                    <parameter>coord</parameter>
                </paramdef>
                <paramdef>
                    <link xlink:href="scalarDataTypes.html">int</link>
                    <parameter>sample</parameter>
                </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="vectorDataTypes.html">float4</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_msaa_t </link>
                    <parameter>image</parameter>
                </paramdef>
                <paramdef>
                    <link xlink:href="vectorDataTypes.html">int4</link>
                    <parameter>coord</parameter>
                </paramdef>
                <paramdef>
                    <link xlink:href="scalarDataTypes.html">int</link>
                    <parameter>sample</parameter>
                </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">float</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_msaa_depth_t </link>
                    <parameter>image</parameter>
                </paramdef>
                <paramdef>
                    <link xlink:href="vectorDataTypes.html">int2</link>
                    <parameter>coord</parameter>
                </paramdef>
                <paramdef>
                    <link xlink:href="scalarDataTypes.html">int</link>
                    <parameter>sample</parameter>
                </paramdef>
            </funcprototype>
        </funcsynopsis>

        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">float</link>
                    <function>
                        read_imagef
                    </function>
                </funcdef>
                <paramdef>
                    <link xlink:href="otherDataTypes.html">image2d_array_msaa_depth_t </link>
                    <parameter>image</parameter>
                </paramdef>
                <paramdef>
                    <link xlink:href="vectorDataTypes.html">int4</link>
                    <parameter>coord</parameter>
                </paramdef>
                <paramdef>
                    <link xlink:href="scalarDataTypes.html">int</link>
                    <parameter>sample</parameter>
                </paramdef>
            </funcprototype>
        </funcsynopsis>


    </refsynopsisdiv>


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

    <refsect1 id="description"><title>Description</title>

        <bridgehead>Forms that take <type>image2d_t</type> and return <type>float4:</type></bridgehead>

        <para>
          Use (<varname>coord.x</varname>, <varname>coord.y</varname>) to do an element 
          lookup in the 2D image object specified by
          <varname>image</varname>.
        </para>

        <para>
          <function>read_imagef</function> returns 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 <constant>CL_UNORM_INT8</constant>
          or <constant>CL_UNORM_INT16</constant>.
        </para>

        <para>
          <function>read_imagef</function> returns floating-point values in the range [-1.0... 1.0]
          for image objects created with <varname>image_channel_data_type</varname> set to
          <constant>CL_SNORM_INT8</constant>, or <constant>CL_SNORM_INT16</constant>.
        </para>

        <para>
          <function>read_imagef</function> returns floating-point values for image objects created
          with <varname>image_channel_data_type</varname> set to <constant>CL_HALF_FLOAT</constant>
          or <constant>CL_FLOAT</constant>.
        </para>

        <para>
          The <function>read_imagef</function> calls that take integer coordinates must
          use a sampler with filter mode set to <constant>CLK_FILTER_NEAREST</constant>,
          normalized coordinates set to <constant>CLK_NORMALIZED_COORDS_FALSE</constant>
          and addressing mode set to <constant>CLK_ADDRESS_CLAMP_TO_EDGE</constant>,
          <constant>CLK_ADDRESS_CLAMP</constant> or <constant>CLK_ADDRESS_NONE</constant>;
          otherwise the values returned are undefined.
        </para>

        <para>
          Values returned by <function>read_imagef</function> for image objects with
          <varname>image_channel_data_type</varname> values not specified in the description
          above are undefined.
        </para>



        <bridgehead>Forms that take <type>image2d_array_t</type> and return <type>float4:</type></bridgehead>

        <para>
            Use <emphasis>coord.xy</emphasis> to do an element lookup in the 2D 
            image identified by <emphasis>coord.z</emphasis> in the 2D image array 
            specified by <varname>image</varname>.
        </para>

        <para>
          <function>read_imagef</function> returns 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 <constant>CL_UNORM_INT8</constant>
          or <constant>CL_UNORM_INT16</constant>.
        </para>

        <para>
          <function>read_imagef</function> returns floating-point values in the range [-1.0... 1.0]
          for image objects created with <varname>image_channel_data_type</varname> set to
          <constant>CL_SNORM_INT8</constant>, or <constant>CL_SNORM_INT16</constant>.
        </para>

        <para>
          <function>read_imagef</function> returns floating-point values for image objects created
          with <varname>image_channel_data_type</varname> set to <constant>CL_HALF_FLOAT</constant>
          or <constant>CL_FLOAT</constant>.
        </para>

        <para>
          The <function>read_imagef</function> calls that take integer coordinates must
          use a sampler with filter mode set to <constant>CLK_FILTER_NEAREST</constant>,
          normalized coordinates set to <constant>CLK_NORMALIZED_COORDS_FALSE</constant>
          and addressing mode set to <constant>CLK_ADDRESS_CLAMP_TO_EDGE</constant>,
          <constant>CLK_ADDRESS_CLAMP</constant> or <constant>CLK_ADDRESS_NONE</constant>;
          otherwise the values returned are undefined.
        </para>

        <para>
          Values returned by <function>read_imagef</function> for image objects with
          <varname>image_channel_data_type</varname> values not specified in the description
          above are undefined.
        </para>



        <bridgehead>Forms that take <type>image2d_depth_t</type> and return <type>float:</type></bridgehead>

        <para>
            Use (<varname>coord.x</varname>, <varname>coord.y</varname>) to do an element lookup in the 2D 
            depth image object
            specified by <varname>image</varname>.
        </para>

        <para>
          <function>read_imagef</function> returns a floating-point value in the range
          [0.0... 1.0] for depth image objects created with <varname>image_channel_data_type</varname>
          set to <constant>CL_UNORM_INT16</constant>
          or <constant>CL_UNORM_INT24</constant>.
        </para>

        <para>
          <function>read_imagef</function> returns a floating-point value for depth
          image objects created with <varname>image_channel_data_type</varname> set to
          <constant>CL_FLOAT</constant>.
        </para>

        <para>
          The <function>read_imagef</function> calls that take integer coordinates must
          use a sampler with filter mode set to <constant>CLK_FILTER_NEAREST</constant>,
          normalized coordinates set to <constant>CLK_NORMALIZED_COORDS_FALSE</constant>
          and addressing mode set to <constant>CLK_ADDRESS_CLAMP_TO_EDGE</constant>,
          <constant>CLK_ADDRESS_CLAMP</constant> or <constant>CLK_ADDRESS_NONE</constant>;
          otherwise the values returned are undefined.
        </para>

        <para>
          Values returned by <function>read_imagef</function> for depth image objects with
          <varname>image_channel_data_type</varname> values not specified in the description
          above are undefined.
        </para>



        <bridgehead>Forms that take <type>image2d_array_depth_t</type> and return <type>float:</type></bridgehead>

        <para>
            Use <emphasis>coord.xy</emphasis> to do an element lookup in the 2D 
            image identified by <emphasis>coord.z</emphasis> in the 2D depth image array
            specified by <varname>image</varname>.
        </para>

        <para>
          <function>read_imagef</function> returns a floating-point value in the range
          [0.0... 1.0] for depth image objects created with <varname>image_channel_data_type</varname>
          set to <constant>CL_UNORM_INT16</constant>
          or <constant>CL_UNORM_INT24</constant>.
        </para>

        <para>
          <function>read_imagef</function> returns a floating-point value for depth
          image objects created with <varname>image_channel_data_type</varname> set to
          <constant>CL_FLOAT</constant>.
        </para>

        <para>
          The <function>read_imagef</function> calls that take integer coordinates must
          use a sampler with filter mode set to <constant>CLK_FILTER_NEAREST</constant>,
          normalized coordinates set to <constant>CLK_NORMALIZED_COORDS_FALSE</constant>
          and addressing mode set to <constant>CLK_ADDRESS_CLAMP_TO_EDGE</constant>,
          <constant>CLK_ADDRESS_CLAMP</constant> or <constant>CLK_ADDRESS_NONE</constant>;
          otherwise the values returned are undefined.
        </para>

        <para>
          Values returned by <function>read_imagef</function> for depth image objects with
          <varname>image_channel_data_type</varname> values not specified in the description
          above are undefined.
        </para>

        &imageMipmapFunctions2DInc;

        <bridgehead>For forms that take image2d_msaa_t and return float4:</bridgehead>

        <para>
            Use the coordinate (<varname>coord.x, coord.y</varname>) 
            and <varname>sample</varname> to 
            do an element lookup in the 2D image object 
            specified by <varname>image</varname>.
        </para>

        <para>
            <function>read_imagef</function> returns 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 <constant>CL_UNORM_INT8</constant>, or
            <constant>CL_UNORM_INT16</constant>.
        </para>

        <para>
            <function>read_imagef</function> returns floating-point values in the 
            range [-1.0 … 1.0] for image objects created with 
            <varname>image_channel_data_type</varname> set to 
            <constant>CL_SNORM_INT8</constant>, 
            or <constant>CL_SNORM_INT16</constant>.
        </para>

        <para>
            <function>read_imagef</function> returns floating-point values for image 
            objects created with <varname>image_channel_data_type</varname> set to 
            <constant>CL_HALF_FLOAT</constant> or <constant>CL_FLOAT</constant>.
        </para>

        <para>
            Values returned by <function>read_imagef</function> for image objects 
            with <varname>image_channel_data_type</varname> values not specified 
            in the description above are undefined.
        </para>

        <bridgehead>For forms that take image2d_array_msaa_t and return float4:</bridgehead>

        <para>
            Use <varname>coord.xy</varname> and <varname>sample</varname> 
            to do an element lookup in 
            the 2D image identified by <varname>coord.z</varname> in the 2D image 
            array specified by <varname>image</varname>.
        </para>

        <para>
            <function>read_imagef</function> returns 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 <constant>CL_UNORM_INT8</constant>, or
            <constant>CL_UNORM_INT16</constant>.
        </para>

        <para>
            <function>read_imagef</function> returns floating-point values in the 
            range [-1.0 … 1.0] for image objects created with 
            <varname>image_channel_data_type</varname> set to <constant>CL_SNORM_INT8</constant>, 
            or <constant>CL_SNORM_INT16</constant>.
        </para>

        <para>
            <function>read_imagef</function> returns floating-point values for image 
            objects created with <varname>image_channel_data_type</varname> set to 
            <constant>CL_HALF_FLOAT</constant> or <constant>CL_FLOAT</constant>.
        </para>

        <para>
            Values returned by <function>read_imagef</function> for image objects 
            with <varname>image_channel_data_type</varname> values not specified 
            in the description above are undefined.
        </para>

        <bridgehead>For forms that take image2d_msaa_depth_t and return float:</bridgehead>

        <para>
            Use the coordinate (<varname>coord.x, coord.y</varname>) 
            and <varname>sample</varname> to 
            do an element lookup in the 2D depth image object 
            specified by <varname>image</varname>.
        </para>

        <para>
            <function>read_imagef</function> returns a floating-point value in the 
            range [0.0 … 1.0] for depth image objects created 
            with <varname>image_channel_data_type</varname> set to 
            <constant>CL_UNORM_INT16</constant> or <constant>CL_UNORM_INT24</constant>.
        </para>

        <para>
            <function>read_imagef</function> returns a floating-point value for depth 
            image objects created with 
            <varname>image_channel_data_type</varname> set to <constant>CL_FLOAT</constant>.
        </para>

        <para>
            Values returned by <function>read_imagef</function> for image objects 
            with <varname>image_channel_data_type</varname> values not specified 
            in the description above are undefined.
        </para>

        <bridgehead>For forms that take image2d_array_msaa_depth_t and return float:</bridgehead>

        <para>
            Use <varname>coord.xy</varname> and <varname>sample</varname> 
            to do an element lookup in 
            the 2D image identified by <varname>coord.z</varname> in the 2D depth 
            image array specified by <varname>image</varname>.
        </para>

        <para>
            <function>read_imagef</function> returns a floating-point value in the 
            range [0.0 … 1.0] for depth image objects created 
            with <varname>image_channel_data_type</varname> set to 
            <constant>CL_UNORM_INT16</constant> or <constant>CL_UNORM_INT24</constant>.
        </para>

        <para>
            <function>read_imagef</function> returns a floating-point value for depth 
            image objects created with 
            <varname>image_channel_data_type</varname> set to <constant>CL_FLOAT</constant>.
        </para>

        <para>
            Values returned by <function>read_imagef</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>

        <para>
          General information about the <function>read_image</function>* functions follows.
        </para>

        &imageFunctionsInc;

        &imageMappingInc;

    </refsect1>

<!-- ================================ 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>,
            <citerefentry><refentrytitle>cl_khr_mipmap_image</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>sampler_t</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>cl_khr_gl_msaa_sharing</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>

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

