<?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>sampler_t</title>
    <meta name="generator" content="DocBook XSL Stylesheets V1.78.1" />
    <meta name="keywords" content="                            &#10;                 sampler_t&#10;            " />
  </head>
  <body>
    <div class="refentry">
      <a id="idp64870816"></a>
      <div class="titlepage"></div>
      <div xmlns="" class="refnamediv">
        <a xmlns="http://www.w3.org/1999/xhtml" id="sampler_t"></a>
        <h1> sampler_t</h1>
        <p>
            A type used to control how elements of a 2D or 3D image object are read by <code xmlns="http://www.w3.org/1999/xhtml" class="function">read_image{f|i|ui}</code>.
        </p>
      </div>
      <div class="refsect2">
        <a id="synopsis"></a>
        <h3>
        </h3>
        <div class="informaltable">
          <table border="0">
            <colgroup>
              <col align="left" class="col1" />
            </colgroup>
            <tbody>
              <tr>
                <td align="left">
const sampler_t &lt;sampler name&gt; = &lt;value&gt;
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
      <div class="refsect1">
        <a id="description"></a>
        <h2>Description</h2>
        <p>
The image read functions take a sampler argument. The sampler can be passed as an argument
to the kernel using <a class="citerefentry" href="clSetKernelArg.html"><span class="citerefentry"><span class="refentrytitle">clSetKernelArg</span></span></a>, or it can be a constant variable of type <span class="type">sampler_t</span> declared in the program source.
        </p>
        <p>
Sampler variables in a program are declared to be of type <span class="type">sampler_t</span>.
The <span class="type">sampler_t</span> type is a 32-bit unsigned int constant and is interpreted as a bit-field that specifies the following properties:
        </p>
        <div class="itemizedlist">
          <ul class="itemizedlist" style="list-style-type: disc; ">
            <li class="listitem">
              <p>
            Addressing Mode
       </p>
            </li>
            <li class="listitem">
              <p>
            Filter Mode
       </p>
            </li>
            <li class="listitem">
              <p>
           Normalized Coordinates
       </p>
            </li>
          </ul>
        </div>
        <p>
These properties control how elements of a 2D or 3D image object are read by
<a class="citerefentry" href="imageFunctions.html"><span class="citerefentry"><span class="refentrytitle">read_image{f|i|ui}</span></span></a>.
        </p>
        <p>
Samplers can also be declared as global constants in the program source using the syntax shown at the top of this page.
        </p>
        <p>
The sampler fields are described in the table below:
        </p>
        <p>
        </p>
        <div class="informaltable">
          <table border="1">
            <colgroup>
              <col align="left" class="col1" />
              <col align="left" class="col2" />
            </colgroup>
            <thead>
              <tr>
                <th align="left">Sampler State</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
<p>
<code class="constant">&lt;normalized coords&gt;</code>
</p>
                        </td>
                <td align="left">
<p>
Specifies whether the <code class="varname">x</code>, <code class="varname">y</code> and <code class="varname">z</code> coordinates are passed in as normalized or unnormalized values. This must be one of the following predefined enums:
</p>

<p>
</p><div class="literallayout"><p>CLK_NORMALIZED_COORDS_TRUE or<br />
CLK_NORMALIZED_COORDS_FALSE.</p></div><p>
</p>

<p>
In OpenCL 1.0, the samplers specified with an image in multiple <code class="function">read_image{f|i|ui}</code> calls declared in a kernel must use
the same value for <code class="constant">&lt;normalized coords&gt;</code>.
</p>
                        </td>
              </tr>
              <tr>
                <td align="left">
<p>
<code class="constant">&lt;address mode&gt;</code>
</p>
                        </td>
                <td align="left">
<p>
Specifies the image addressing-mode i.e. how out-of-range
image coordinates are handled. This must be a literal value
and can be one of the following predefined enums:
</p>

<p>
CLK_ADDRESS_REPEAT - out-of-range image coordinates
are wrapped to the valid range. This <code class="constant">address mode</code> can
only be used with normalized coordinates. If normalized
coordinates are not used, this addressing mode may generate
image coordinates that are undefined.
</p>

<p>
CLK_ADDRESS_CLAMP_TO_EDGE - out-of-range image
coordinates are clamped to the extent.
</p>

<p>
CLK_ADDRESS_CLAMP<sup>32</sup> - out-of-range image coordinates
will return a border color. The border color is (<code class="constant">0.0f</code>,
<code class="constant">0.0f</code>, <code class="constant">0.0f</code>, <code class="constant">0.0f</code>) if image channel order is CL_A,
CL_INTENSITY, CL_RA, CL_ARGB, CL_BGRA or CL_RGBA
and is (<code class="constant">0.0f</code>, <code class="constant">0.0f</code>,
<code class="constant">0.0f</code>, <code class="constant">1.0f</code>) if image channel
order is CL_R, CL_RG, CL_RGB or CL_LUMINANCE.
</p>

<p>
CLK_ADDRESS_NONE - for this address mode the
programmer guarantees that the image coordinates used to
sample elements of the image refer to a location inside the
image; otherwise the results are undefined.
</p>
                        </td>
              </tr>
              <tr>
                <td align="left">
<p>
<code class="constant">&lt;filter mode&gt;</code>
</p>
                        </td>
                <td align="left">
<p>
Specifies the filtering mode to use. This must be a literal value
and can be one of the following predefined enums:
CLK_FILTER_NEAREST or CLK_FILTER_LINEAR.
</p>


<p>
Refer to section on Image Addressing and Filtering in the <a href="http://www.khronos.org/registry/cl/specs/opencl-1.x-latest.pdf#page=212" target="OpenCL Spec">OpenCL specification</a> for a description of these filtering modes.
</p>
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
	</p>
        <p>
Samplers cannot be declared as arrays, pointers, or be used as the type for local variables inside a function or as the return value of a function defined in a program. Samplers cannot be passed as arguments to functions called by a <a class="citerefentry" href="functionQualifiers.html"><span class="citerefentry"><span class="refentrytitle">__kernel</span></span></a> function.
A sampler argument to a <a class="citerefentry" href="functionQualifiers.html"><span class="citerefentry"><span class="refentrytitle">__kernel</span></span></a>
function cannot be modified.
</p>
      </div>
      <div class="refsect1">
        <a id="notes"></a>
        <h2>Notes</h2>
        <p>
The maximum number of samplers that can be declared in a kernel can be queried using the
<code class="constant">CL_DEVICE_MAX_SAMPLERS</code> token in the table of OpenCL Device Queries for <a class="citerefentry" href="clGetDeviceInfo.html"><span class="citerefentry"><span class="refentrytitle">clGetDeviceInfo</span></span></a>.
        </p>
      </div>
      <div class="refsect2">
        <a id="example1"></a>
        <h3>
            Example
        </h3>
        <div class="informaltable">
          <table border="0">
            <colgroup>
              <col align="left" class="col1" />
            </colgroup>
            <tbody>
              <tr>
                <td align="left">
const sampler_t samplerA = CLK_NORMALIZED_COORDS_TRUE |
                           CLK_ADDRESS_REPEAT         |
                           CLK_FILTER_NEAREST;
                        </td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>
samplerA specifies a sampler that uses normalized coordinates, the repeat addressing mode and
a nearest filter.
</p>
      </div>
      <div class="refsect1">
        <a id="specification"></a>
        <h2>Specification</h2>
        <p>
            <img src="pdficon_small1.gif" />
                                                 
            <a href="http://www.khronos.org/registry/cl/specs/opencl-1.x-latest.pdf#page=130" target="OpenCL Spec">OpenCL Specification</a>
        </p>
      </div>
      <div class="refsect1">
        <a id="seealso"></a>
        <h2>Also see</h2>
        <p>
            <a class="citerefentry" href="otherDataTypes.html"><span class="citerefentry"><span class="refentrytitle">Other Data Types</span></span></a>,
<a class="citerefentry" href="imageFunctions.html"><span class="citerefentry"><span class="refentrytitle">Image Read and Write Functions</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-2009 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>
