<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "xhtml1-transitional.dtd">
<!-- saved from url=(0013)about:internet -->
<?xml-stylesheet type="text/xsl" href="mathml.xsl"?><html xmlns="http://www.w3.org/1999/xhtml" xmlns:pref="http://www.w3.org/2002/Math/preference" xmlns:xlink="http://www.w3.org/1999/xlink" pref:renderer="mathplayer-dl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style xmlns="" type="text/css">
    /* This style sets a margin around the entire page */
        html, body {
            margin: 10px;
        }

        p {
            font: normal 16px verdana, sans-serif;
            margin: 0;
            padding-bottom:12px;
        }

        h1 {
            font: bold 25px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h2 {
            font: bold 19px verdana, sans-serif;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        h3 {
            font: bold 19px verdana, sans-serif !important;
            margin-top: 28px;
            margin-bottom: 3px;
            padding-top: 0;
            padding-bottom: 0;
        }

        li {
            font: normal 16px verdana, sans-serif;
            margin-top: 0;
            margin-bottom: 18px;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pdparam {
            font: italic 16px verdana, sans-serif;
        }

                .term {
                        font: italic 16px verdana, sans-serif;
                        font-weight: normal;
                }

                .type {
                        font: normal 16px verdana, sans-serif !important;
                }

                .parameter {
                        font-style: italic;
                        }

        a:link, a:visited {
            color: blue;
            text-decoration: none;
            font: normal 16px;
        }

        a:hover {
            background-color: #FFFF99;
            font: normal 16px;
        }

        div.funcsynopsis {
            text-align: left;
            background-color: #e6e6e6;
            font: normal 16px verdana, sans-serif;
                        padding-top: 10px;
                        padding-bottom: 10px;
        }

        div.funcsynopsis table {
            border-collapse: separate;
            font: normal 16px verdana, sans-serif;
        }

        div.funcsynopsis td {
            background-color: #e6e6e6;
            border: 0 solid #000;
            padding: 1px;
            font: normal 16px verdana, sans-serif;
        }

        div.refsect1 {
            font-family: verdana, sans-serif;
            font-size: 16px;
        }

        code.constant {
            font: normal 16px courier new, monospace !important;
        }

                span.errorname {
            font: normal 16px verdana, sans-serif !important;
        }

        code.function {
            font: bold 16px verdana, sans-serif !important;
        }

        b.fsfunc {
            font: bold 16px verdana, sans-serif !important;
        }

        code.varname {
            font: italic 16px verdana, sans-serif;
        }

        code.replaceable {
            font: italic 16px courier new, monospace;
        }

        code.funcdef {
            font: normal 16px verdana, sans-serif !important;
        }

        .citerefentry {
            font: normal 16px verdana, sans-serif !important;
        }

        .parameter {
            font-style: italic;
        }

        code.fsfunc {
            font: normal 16px verdana, sans-serif !important;
        }

        /* PARAMETER: This style controls spacing between the terms in Parameter section */
        dt {
            margin-top: 15px;
        }

        /* TABLES: These styles apply to all tables OTHER than the Synopsis and Example tables */
        div.refsect1 table {
            width: 100%;
                        margin-top: 10px;
            background-color: #FFF;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
                        font: normal 16px verdana, sans-serif;
        }

        div.refsect1 th {
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: bold 16px verdana, sans-serif;
        }

        div.refsect1 td {
            background-color: #FFF;
            padding: 5px;
            vertical-align: text-top;
                        border-collapse: collapse;
                        border-color: #000;
            border-width: 1px;
            font: normal 16px verdana, sans-serif;
        }

                  div.refsect1 p{
            font: normal 16px verdana, sans-serif;
            margin-top: 8px;
            margin-bottom: 8px;
            padding-top: 0;
            padding-bottom: 0;
        }


        /* EXAMPLE: These styles apply only to the Example section */
        div.refsect2 {
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 table {
            margin-top: 0;
            background-color: #e6e6e6;
            width: 100%;
            border: 0 solid #000;
            padding: 2px;
            font: normal 16px courier new, monospace !important;
        }

        div.refsect2 td {
            background-color: #e6e6e6;
            font: normal 16px courier new, monospace !important;
                        white-space:pre;
        }

        /* COPYRIGHT: This style formats the text of the copyright statement at the bottom of the page */
        div.refsect3 {
            font: normal 11px verdana, sans-serif;
            margin-top: 50px;
            margin-bottom: 20px;
            padding-top: 0;
            padding-bottom: 0;
        }

</style>
    <title>read_imagef (1D)</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.79.1" />
    <meta name="keywords" content="read_imagef (1D)" />
  </head>
  <body>
    <div class="refentry">
      <a id="id-1"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="read_image2d"></a>
        <h1>read_imagef (1D)</h1>
        <p>
            Do an element lookup in the 1D image object, returning floating-point values.
        </p>
      </div>
      <div class="refsynopsisdiv">
        <h2></h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="vectorDataTypes.html" target="pagedisplay">float4</a>
                    <strong class="fsfunc">
                        read_imagef
                    </strong>
                (</code>
                <td>
                    read_only <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">image1d_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">image</var>
                , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="sampler_t.html" target="pagedisplay">sampler_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">sampler</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="vectorDataTypes.html" target="pagedisplay">int</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">coord</var>
            <code>)</code></td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="vectorDataTypes.html" target="pagedisplay">float4</a>
                    <strong class="fsfunc">
                        read_imagef
                    </strong>
                (</code>
                <td>
                    read_only <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">image1d_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">image</var>
                , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="sampler_t.html" target="pagedisplay">sampler_t</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">sampler</var>
            , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">float</a>
                 <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">coord</var>
            <code>)</code></td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="vectorDataTypes.html" target="pagedisplay">float4</a>
                    <strong class="fsfunc">
                        read_imagef
                    </strong>
                (</code>
                <td>
                    read_only <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">image1d_array_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">image</var>
                , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="sampler_t.html" target="pagedisplay">sampler_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">sampler</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="vectorDataTypes.html" target="pagedisplay">float2</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">coord</var>
                <code>)</code></td>
            </tr>
          </table>
        </div>
        <h2><a id="id-1.4.5"></a>Functions added with mipmap support enabled by extension <code class="code">cl_khr_mipmap_image</code>:</h2>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="vectorDataTypes.html" target="pagedisplay">float4</a>
                    <strong class="fsfunc">
                        read_imagef
                    </strong>
                (</code>
                <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">image1d_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">image</var>
                , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">sampler_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">sampler</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">float</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">coord</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">float</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">lod</var>
                <code>)</code></td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="vectorDataTypes.html" target="pagedisplay">float4</a>
                    <strong class="fsfunc">
                        read_imagef
                    </strong>
                (</code>
                <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">image1d_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">image</var>
                , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">sampler_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">sampler</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">float</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">coord</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">float</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">gradient_x</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">float</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">gradient_y</var>
                <code>)</code></td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="vectorDataTypes.html" target="pagedisplay">float4</a>
                    <strong class="fsfunc">
                        read_imagef
                    </strong>
                (</code>
                <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">image1d_array_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">image</var>
                , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">sampler_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">sampler</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="vectorDataTypes.html" target="pagedisplay">float2</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">coord</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">float</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">lod</var>
                <code>)</code></td>
            </tr>
          </table>
        </div>
        <div class="funcsynopsis">
          <table xmlns="" border="0" summary="Function synopsis" cellspacing="0" cellpadding="0">
            <tr valign="bottom">
              <td>
                <code xmlns="http://www.w3.org/1999/xhtml" class="funcdef">
                    <a class="link" href="vectorDataTypes.html" target="pagedisplay">float4</a>
                    <strong class="fsfunc">
                        read_imagef
                    </strong>
                (</code>
                <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">image1d_array_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">image</var>
                , </td>
              </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="otherDataTypes.html" target="pagedisplay">sampler_t</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">sampler</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="vectorDataTypes.html" target="pagedisplay">float2</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">coord</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">float</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">gradient_x</var>
                , </td>
            </tr>
            <tr valign="top">
              <td> </td>
              <td>
                    <a xmlns="http://www.w3.org/1999/xhtml" class="link" href="scalarDataTypes.html" target="pagedisplay">float</a>
                     <var xmlns="http://www.w3.org/1999/xhtml" class="pdparam">gradient_y</var>
                <code>)</code></td>
            </tr>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Functions to read 1D images and image arrays</h2>
        <p>
          For forms that take <span class="type">image1d_t</span>, use <span class="emphasis"><em>coord</em></span> to do an
          element lookup in the 1D image object specified by <code class="varname">image</code>.
        </p>
        <p>
          For forms that take <span class="type">image1d_array_t</span>, use <span class="emphasis"><em>coord.x</em></span>
          to do an element lookup in the 1D image identified by <span class="emphasis"><em>coord.y</em></span>
          in the 1D image array specified by <code class="varname">image</code>.
        </p>
        <p>
          The samplerless read image functions behave exactly as the corresponding read
          image functions that take integer coordinates and a sampler with filter mode
          set to <code class="constant">CLK_FILTER_NEAREST</code>, normalized coordinates set
          to <code class="constant">CLK_NORMALIZED_COORDS_FALSE</code> and addressing mode to
          <code class="constant">CLK_ADDRESS_NONE</code>.
        </p>
        <p>
          <code class="function">read_imagef</code> returns floating-point values in the range
          [0.0... 1.0] for image objects created with <code class="varname">image_channel_data_type</code>
          set to one of the predefined packed formats or <code class="constant">CL_UNORM_INT8</code>
          or <code class="constant">CL_UNORM_INT16</code>.
        </p>
        <p>
          <code class="function">read_imagef</code> returns floating-point values in the range [-1.0... 1.0]
          for image objects created with <code class="varname">image_channel_data_type</code> set to
          <code class="constant">CL_SNORM_INT8</code>, or <code class="constant">CL_SNORM_INT16</code>.
        </p>
        <p>
          <code class="function">read_imagef</code> returns floating-point values for image objects created
          with <code class="varname">image_channel_data_type</code> set to <code class="constant">CL_HALF_FLOAT</code>
          or <code class="constant">CL_FLOAT</code>.
        </p>
        <p>
          The <code class="function">read_imagef</code> calls that take integer coordinates must
          use a sampler with filter mode set to <code class="constant">CLK_FILTER_NEAREST</code>,
          normalized coordinates set to <code class="constant">CLK_NORMALIZED_COORDS_FALSE</code>
          and addressing mode set to <code class="constant">CLK_ADDRESS_CLAMP_TO_EDGE</code>,
          <code class="constant">CLK_ADDRESS_CLAMP</code> or <code class="constant">CLK_ADDRESS_NONE</code>;
          otherwise the values returned are undefined.
        </p>
        <p>
          Values returned by <code class="function">read_imagef</code> for image objects with
          <code class="varname">image_channel_data_type</code> values not specified in the description
          above are undefined.
        </p>
        <p>
            If the 
            <a class="citerefentry" href="cl_khr_mipmap_image.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_mipmap_image</span></span></a>
            extension is supported, The image read and write 
            functions (see sections 6.13.14.2, 6.13.14.3 and 6.13.14.4) read 
            from and write to mip-level 0 if the image argument is a mip-mapped image.
        </p>
        <h4><a id="id-1.5.11"></a>Mipmap read image functions:</h4>
        <p>
        For the forms that take an <span class="type">image1d_t</span> object,
        use the coordinate <span class="emphasis"><em>coord</em></span> to
        do an element lookup in the mip-level specified by
        <code class="varname">lod</code> in the 1D image object specified
        by <code class="varname">image</code>.
    </p>
        <p>
        For the forms that use gradients, use the gradients to compute
        the lod and coordinate <span class="emphasis"><em>coord</em></span> to do an
        element lookup in
        the mip-level specified by the computed lod in
        the 1D image object specified by <code class="varname">image</code>.
    </p>
        <p>
        For the forms that take an <span class="type">image1d_array_t</span> object,
        use the coordinate <span class="emphasis"><em>coord.x</em></span> to
        do an element lookup in the 1D image identified by
        <span class="emphasis"><em>coord.x</em></span> and mip-level specified by
        <code class="varname">lod</code> in the 1D image object specified
        by <code class="varname">image</code>.
    </p>
        <p>
        When a multisample image is accessed in a kernel,
        the access takes one vector of
        integers describing which pixel to fetch and an
        integer corresponding to the sample numbers
        describing which sample within the pixel to fetch.
        sample identifies the sample position in the
        multi-sample image.
    </p>
        <p>
        For best performance, we recommend that <code class="varname">sample</code>
        be a literal value so it is known at
        compile time and the OpenCL compiler can perform appropriate
        optimizationsfor multisample reads on the device.
    </p>
        <p>
        NOTE: <code class="constant">CL_SAMPLER_NORMALIZED_COORDS</code>
        must be <code class="constant">CL_TRUE</code> for built-in functions
        described in the table above that read from a
        mip-mapped image; otherwise the behavior is
        undefined. The value specified in the
        <code class="varname">lod</code> argument is clamped to the minimum of (actual
        number of mip-levels - 1) in the image or value
        specified for <code class="constant">CL_SAMPLER_LOD_MAX_KHR</code>.
    </p>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
          General information about the <code class="function">read_image</code>* functions follows.
        </p>
        <p>
     The built-in functions defined in this section
    can only be used with image memory objects.  An image memory object can be accessed by
    specific function calls that read from and/or write to specific locations in the image.
  </p>
        <p>
    Note that image writes to sRGB images are only supported if the 
    <a class="citerefentry" href="cl_khr_srgb_image_writes.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_srgb_image_writes</span></span></a> 
    extension is supported; 
    otherwise the behavior of writing to a sRGB image is undefined.
  </p>
        <p>
    Image memory objects that are being read by a kernel should be declared with the <a class="citerefentry" href="accessQualifiers.html"><span class="citerefentry"><span class="refentrytitle">read_only</span></span></a>
    qualifier. <code class="function">write_image</code> calls to image memory objects declared with the
    <a class="citerefentry" href="accessQualifiers.html"><span class="citerefentry"><span class="refentrytitle">read_only</span></span></a>
    qualifier will generate a compilation error. Image memory objects that
    are being written to by a kernel should be declared with the <a class="citerefentry" href="accessQualifiers.html"><span class="citerefentry"><span class="refentrytitle">write_only</span></span></a> qualifier.
    <code class="function">read_image</code> calls to image memory objects declared with the <a class="citerefentry" href="accessQualifiers.html"><span class="citerefentry"><span class="refentrytitle">write_only</span></span></a>
    qualifier will generate a compilation error. <code class="function">read_image</code> and
    <code class="function">write_image</code> calls to the same image memory object in a kernel are
    not supported.
    Image memory objects that are being read and written by a kernel should be declared with the 
    <a class="citerefentry" href="accessQualifiers.html"><span class="citerefentry"><span class="refentrytitle">read_write</span></span></a> 
    qualifier.
  </p>
        <p>
    The <code class="function">read_image</code> calls returns a four component floating-point, integer or
    unsigned integer color value. The color values returned by <code class="function">read_image</code>
    are identified as <code class="code">x, y, z, w</code> where <code class="code">x</code> refers to the red component,
    <code class="code">y</code> refers to the green component, <code class="code">z</code> refers to the blue component
    and <code class="code">w</code> refers to the alpha component.
  </p>
        <p>
      The samplerless read image functions behave exactly as the corresponding read
      image functions that take integer coordinates and a sampler with filter mode
      set to <code class="constant">CLK_FILTER_NEAREST</code>, normalized coordinates set
      to <code class="constant">CLK_NORMALIZED_COORDS_FALSE</code> and addressing mode to
      <code class="constant">CLK_ADDRESS_NONE</code>.
    </p>
        <h4><a id="id-1.6.8"></a>sRGB Images</h4>
        <p>
    
    The built-in image read functions will perform
     sRGB to linear RGB conversions if the image is 
    an sRGB image. Writing to sRGB images from a 
    kernel is an optional extension. The 
    <a class="citerefentry" href="cl_khr_srgb_image_writes.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_srgb_image_writes</span></span></a> 
    extension will be reported in the 
    <code class="constant">CL_DEVICE_EXTENSIONS</code> string 
    if a device supports writing to sRGB images using 
    <a class="citerefentry" href="imageFunctions.html"><span class="citerefentry"><span class="refentrytitle">write_imagef</span></span></a>. 
    <a class="citerefentry" href="clGetSupportedImageFormats.html"><span class="citerefentry"><span class="refentrytitle">clGetSupportedImageFormats</span></span></a> 
    will return the supported sRGB images if 
    <code class="constant">CL_MEM_READ_WRITE</code> or 
    <code class="constant">CL_MEM_WRITE_ONLY</code> is specified in 
    <code class="varname">flags</code> argument and the 
    device supports writing to an sRGB image. If 
    <a class="citerefentry" href="cl_khr_srgb_image_writes.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_srgb_image_writes</span></span></a> 
    is supported, the 
    built-in image write functions will perform 
    the linear to sRGB conversion. 
  </p>
        <p>
    Only the R, G and B components are converted from 
    linear to sRGB and vice-versa. The alpha 
    component is returned as is.
  </p>
        <h4><a id="id-1.6.11"></a>Mapping image channels to color values</h4>
        <p>
     The following table describes the mapping
    of the number of channels of an image element to the appropriate components in the
    <span class="type">float4</span>, <span class="type">int4</span> or <span class="type">uint4</span> vector data type for
    the color values returned by <code class="function">read_image{f|i|ui}</code> or supplied
    to <code class="function">write_image{f|i|ui}</code>. The unmapped components will be set
    to <code class="constant">0.0</code> for red, green and blue channels and will be set to
    <code class="constant">1.0</code> for the alpha channel.
  </p>
        <p>
    </p>
        <div class="informaltable">
          <table class="informaltable" border="1">
            <colgroup>
              <col align="center" class="col1" />
              <col align="center" class="col2" />
            </colgroup>
            <thead>
              <tr>
                <th align="center">Channel Order</th>
                <th align="center"><span class="type">float4</span>, <span class="type">int4</span> or <span class="type">uint4</span> components of channel data</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="center"><code class="constant">CL_R</code>, <code class="constant">CL_Rx</code></td>
                <td align="center">
                  <code class="constant">(r, 0.0, 0.0, 1.0)</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">CL_A</code>
                </td>
                <td align="center">
                  <code class="constant">(0.0, 0.0, 0.0, a)</code>
                </td>
              </tr>
              <tr>
                <td align="center"><code class="constant">CL_RG</code>, <code class="constant">CL_RGx</code></td>
                <td align="center">
                  <code class="constant">(r, g, 0.0, 1.0)</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">CL_RA</code>
                </td>
                <td align="center">
                  <code class="constant">(r, 0.0, 0.0, a)</code>
                </td>
              </tr>
              <tr>
                <td align="center">
               <code class="constant">CL_RGB</code>, 
               <code class="constant">CL_RGBx</code>, 
               <code class="constant">CL_sRGB</code>, 
               <code class="constant">CL_sRGBx</code>
            </td>
                <td align="center">
                  <code class="constant">(r, g, b, 1.0)</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">CL_RGBA, CL_BGRA, CL_ARGB, CL_ABGR, CL_sRGBA, CL_sBGRA</code>
                </td>
                <td align="center">
                  <code class="constant">(r, g, b, a)</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">CL_INTENSITY</code>
                </td>
                <td align="center">
                  <code class="constant">(I, I, I, I)</code>
                </td>
              </tr>
              <tr>
                <td align="center">
                  <code class="constant">CL_LUMINANCE</code>
                </td>
                <td align="center">
                  <code class="constant">(L, L, L, 1.0)</code>
                </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
  </p>
        <p>
      For <code class="constant">CL_DEPTH</code> images, a scalar value is 
      returned by <code class="function">read_imagef</code> or supplied to
      <code class="function">write_imagef</code>.
  </p>
        <p>
    A kernel that uses a sampler with the <code class="constant">CL_ADDRESS_CLAMP</code> 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
    <code class="function">read_image{f|i|ui}</code>, 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
    <code class="constant">CL_DEVICE_MAX_SAMPLERS</code>. Enqueuing a kernel that requires more samplers
    than the implementation can support will result in a <code class="constant">CL_OUT_OF_RESOURCES</code>
    error being returned.
  </p>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />

            <a href="https://www.khronos.org/registry/cl/specs/opencl-2.0-openclc.pdf#namedest=imageFunctions" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="imageFunctions.html"><span class="citerefentry"><span class="refentrytitle">Image Functions</span></span></a>, 
            <a class="citerefentry" href="cl_khr_mipmap_image.html"><span class="citerefentry"><span class="refentrytitle">cl_khr_mipmap_image</span></span></a>,
            <a class="citerefentry" href="sampler_t.html"><span class="citerefentry"><span class="refentrytitle">sampler_t</span></span></a>
        </p>
      </div>
      <div xmlns="" class="refsect3" lang="en" xml:lang="en"><a xmlns="http://www.w3.org/1999/xhtml" id="Copyright"></a><h4 xmlns="http://www.w3.org/1999/xhtml"></h4><img xmlns="http://www.w3.org/1999/xhtml" src="KhronosLogo.jpg" /><p xmlns="http://www.w3.org/1999/xhtml"></p>Copyright © 2007-2015 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.
</div>
    </div>
  </body>
</html>
