Blender Git Loki
Git Commits -> Revision e180529
Revision e180529 by Mai Lavelle (temp-cycles-opencl-staging) 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)
/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)