summaryrefslogtreecommitdiff
path: root/src/kernels/cl_internal_copy_image_3d_to_buffer_align4.cl
blob: bb001afdd39897045606165dc56a3a2bfb0736ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
kernel void __cl_copy_image_3d_to_buffer_align4(__read_only image3d_t image, global uint *buffer, unsigned int region0,
                                                unsigned int region1, unsigned int region2, unsigned int src_origin0,
                                                unsigned int src_origin1, unsigned int src_origin2,
                                                unsigned int dst_offset) {
  int i = get_global_id(0);
  int j = get_global_id(1);
  int k = get_global_id(2);
  uint4 color;
  const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_NONE | CLK_FILTER_NEAREST;
  int4 src_coord;
  if ((i >= region0) || (j >= region1) || (k >= region2))
    return;
  src_coord.x = src_origin0 + i;
  src_coord.y = src_origin1 + j;
  src_coord.z = src_origin2 + k;
  color = read_imageui(image, sampler, src_coord);
  dst_offset += (k * region1 + j) * region0 + i;
  buffer[dst_offset] = color.x;
}