Blender Git Commit Log

Git Commits -> Revision e180529

June 8, 2017, 09:35 (GMT)
Cycles: Pass all buffers to each kernel call for OpenCL

Technically not passing all buffers used by a kernel is undefined
behavior. We haven't had any issues with this so far on AMD or
Nvidia, but it's known to be a problem with Intel and we received
a report from AMD that this is a problem on newer hardware, so we
need to make this change at some point.

Unfortunately there a cost to being correct, about 5% for the
benchmark scenes. For low sample counts it's even worse, I've
seen up to 50% slowdown. For the latter case I think adjusting
tile updating logic can help, but not sure what that would look
like yet (it would be just a few lines change however).

Commit Details:

Full Hash: e1805299d2f43f8ab473a979bafc7a8b57d9270b
Parent Commit: e7ad962
Lines Changed: +225, -122

1 Added Path:

/intern/cycles/kernel/kernels/opencl/kernel_split_function.h (+72, -0) (View)

20 Modified Paths:

/intern/cycles/device/opencl/opencl_split.cpp (+59, -4) (Diff)
/intern/cycles/kernel/CMakeLists.txt (+6, -0) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_buffer_update.cl (+6, -7) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_direct_lighting.cl (+6, -7) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_do_volume.cl (+4, -6) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_enqueue_inactive.cl (+6, -7) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_holdout_emission_blurring_pathtermination_ao.cl (+6, -9) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_indirect_background.cl (+4, -6) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_indirect_subsurface.cl (+4, -6) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_lamp_emission.cl (+4, -6) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_next_iteration_setup.cl (+6, -7) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_path_init.cl (+4, -6) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_queue_enqueue.cl (+6, -7) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_scene_intersect.cl (+4, -6) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_shader_eval.cl (+4, -6) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_shader_setup.cl (+6, -7) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_shader_sort.cl (+6, -7) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_ao.cl (+4, -6) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_dl.cl (+4, -6) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_subsurface_scatter.cl (+4, -6) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021