Description
The image read functions take a sampler argument.
The sampler can be passed as an argument to the kernel using
clSetKernelArg, or can be declared in the outermost scope of kernel
functions, or it can be a constant variable of type sampler_t declared in
the program source.
Sampler variables in a program are declared to be of type sampler_t.
A variable of sampler_t type declared in the program source must be
initialized with a 32-bit unsigned integer constant, which is interpreted as
a bit-field specifying the following properties:
-
Addressing Mode
-
Filter Mode
-
Normalized Coordinates
These properties control how elements of an image object are read by read_image{f|i|ui}.
Samplers can also be declared as global constants in the program source using the following syntax.
const sampler_t <sampler name> = <value>
or
constant sampler_t <sampler name> = <value>
or
__constant sampler_t <sampler_name> = <value>
Note that samplers declared using the constant qualifier are not counted
towards the maximum number of arguments pointing to the constant address
space or the maximum size of the constant address space allowed per device
(i.e. the value of the CL_DEVICE_ and CL_DEVICE_ device queries).
The sampler fields are described in the following table.
| Sampler State | Description |
|---|---|
|
Specifies whether the x, y and z coordinates are passed in as normalized or unnormalized values. This must be a literal value and can be one of the following predefined enums: The samplers used with an image in multiple calls to read_image{f|i|ui} declared in a kernel must use the same value for <normalized coords>. |
|
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: For 1D and 2D image arrays, the addressing mode applies only to the
x and (x, y) coordinates.
The addressing mode for the coordinate which specifies the array index
is always |
|
Specifies the filter mode to use.
This must be a literal value and can be one of the following
predefined enums: Refer to the detailed description of these filter modes. |
Examples:
const sampler_t samplerA = CLK_NORMALIZED_COORDS_TRUE |
CLK_ADDRESS_REPEAT |
CLK_FILTER_NEAREST;
samplerA specifies a sampler that uses normalized coordinates, the repeat
addressing mode and a nearest filter.
The maximum number of samplers that can be declared in a kernel can be
queried using the CL_DEVICE_ token in clGetDeviceInfo.
Document Notes
For more information, see the OpenCL C Specification
This page is extracted from the OpenCL C Specification. Fixes and changes should be made to the Specification, not directly.