Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h')
-rw-r--r--intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h18
1 files changed, 8 insertions, 10 deletions
diff --git a/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h b/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h
index 00bb0686b98..8f20251afd7 100644
--- a/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h
+++ b/intern/cycles/kernel/kernels/opencl/kernel_opencl_image.h
@@ -96,18 +96,16 @@ ccl_device_inline float4 svm_image_texture_read(KernelGlobals *kg,
const int *offsets,
int id, int x, int y, int z)
{
- int tix = x / TILE_SIZE, itix = x % TILE_SIZE,
- tiy = y / TILE_SIZE, itiy = y % TILE_SIZE,
- tiz = z / TILE_SIZE, itiz = z % TILE_SIZE;
- int tile_index = tix + s_info->tiled_w * (tiy + tiz * s_info->tiled_h);
- int sparse_index = offsets[tile_index];
- if(sparse_index < 0) {
+ int tile_start = offsets[(x >> TILE_INDEX_SHIFT) + s_info->tiled_w
+ * ((y >> TILE_INDEX_SHIFT) + (z >> TILE_INDEX_SHIFT) * s_info->tiled_h)];
+ if(tile_start < 0) {
return make_float4(0.0f);
}
- int itiw = (x > s_info.div_w) ? s_info.remain_w : TILE_SIZE;
- int itih = (y > s_info.div_h) ? s_info.remain_h : TILE_SIZE;
- int in_tile_index = itix + itiw * (itiy + itiz * itih);
- return svm_image_texture_read(kg, info, id, sparse_index + in_tile_index);
+ int index = tile_start + (x & TILE_INDEX_MASK)
+ + ((x > s_info.div_w) ? s_info.remain_w : TILE_SIZE)
+ * ((y & TILE_INDEX_MASK) + (z & TILE_INDEX_MASK)
+ * ((y > s_info.div_h) ? s_info.remain_h : TILE_SIZE));
+ return svm_image_texture_read(kg, info, id, index);
}
ccl_device_inline float4 svm_image_texture_read_2d(KernelGlobals *kg, int id, int x, int y)