/*!
[config]
name: 2D image reading

need_image_support: true

dimensions:  1
global_size: 1 0 0
local_size:  1 0 0

[test]
name: read float from CL_FLOAT CL_RGBA image.
kernel_name: readf

arg_in:  1 image float4  0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.0 \
                         0.0 0.0 0.0 0.0  0.0 0.0 0.0 0.0 \
                         0.0 0.0 0.0 0.0  0.1 0.2 0.3 0.4 \
           image_type 2d                                  \
           image_width 2                                  \
           image_height 3                                 \
           image_channel_order RGBA                       \
           image_channel_data_type FLOAT
arg_in:  2 sampler normalized_coords 0                    \
                   addressing_mode NONE                   \
                   filter_mode NEAREST
arg_in:  3 int2     1   2
arg_in:  4 float2 1.5 2.5
arg_out: 0 buffer float4[2] 0.1 0.2 0.3 0.4 \
                            0.1 0.2 0.3 0.4

[test]
name: read signed integer from CL_SIGNED_INT8 CL_RGBA image.
kernel_name: readi

arg_in:  1 image char4   0 0 0 0     0   0   0   0 \
                         0 0 0 0     0   0   0   0 \
                         0 0 0 0  -128  -1   0 127 \
           image_type 2d                           \
           image_width 2                           \
           image_height 3                          \
           image_channel_order RGBA                \
           image_channel_data_type SIGNED_INT8
arg_in:  2 sampler normalized_coords 0             \
                   addressing_mode NONE            \
                   filter_mode NEAREST
arg_in:  3 int2     1   2
arg_in:  4 float2 1.5 2.5
arg_out: 0 buffer int4[2]  -128 -1 0 127 \
                           -128 -1 0 127

[test]
name: read unsigned integer from CL_UNSIGNED_INT8 CL_RGBA image.
kernel_name: readui

arg_in:  1 image uchar4  0 0 0 0     0   0   0   0 \
                         0 0 0 0     0   0   0   0 \
                         0 0 0 0     0   1 127 255 \
           image_type 2d                           \
           image_width 2                           \
           image_height 3                          \
           image_channel_order RGBA                \
           image_channel_data_type UNSIGNED_INT8
arg_in:  2 sampler normalized_coords 0             \
                   addressing_mode NONE            \
                   filter_mode NEAREST
arg_in:  3 int2     1   2
arg_in:  4 float2 1.5 2.5
arg_out: 0 buffer uint4[2] 0 1 127 255 \
                           0 1 127 255
!*/

kernel void readf(global float4 *out, read_only image2d_t img, sampler_t s,
                  int2 coords_i, float2 coords_f) {
	out[0] = read_imagef(img, s, coords_i);
	out[1] = read_imagef(img, s, coords_f);
}

kernel void readi(global int4 *out, read_only image2d_t img, sampler_t s,
                  int2 coords_i, float2 coords_f) {
	out[0] = read_imagei(img, s, coords_i);
	out[1] = read_imagei(img, s, coords_f);
}

kernel void readui(global uint4 *out, read_only image2d_t img, sampler_t s,
                  int2 coords_i, float2 coords_f) {
	out[0] = read_imageui(img, s, coords_i);
	out[1] = read_imageui(img, s, coords_f);
}
