Blender Git Commit Log

Git Commits -> Revision 18cc5af

Revision 18cc5af by Mai Lavelle
June 5, 2017, 15:00 (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: 18cc5afa58fc8df01cd3f5353b875374053045ed
Parent Commit: 7eb38c0
Lines Changed: +203, -115

1 Added Path:

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

19 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_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