Blender Git Commit Log

Git Commits -> Revision 230c00d

Revision 230c00d by Mai Lavelle (master)
March 8, 2017, 05:52 (GMT)
Cycles: OpenCL split kernel refactor

This does a few things at once:

- Refactors host side split kernel logic into a new device
agnostic class `DeviceSplitKernel`.
- Removes tile splitting, a new work pool implementation takes its place and
allows as many threads as will fit in memory regardless of tile size, which
can give performance gains.
- Refactors split state buffers into one buffer, as well as reduces the
number of arguments passed to kernels. Means there's less code to deal
with overall.
- Moves kernel logic out of OpenCL kernel files so they can later be used by
other device types.
- Replaced OpenCL specific APIs with new generic versions
- Tiles can now be seen updating during rendering

Commit Details:

Full Hash: 230c00d872b817b0c4de85647464e4a12197c6aa
Parent Commit: 520b533
Lines Changed: +1734, -2571

4 Added Paths:

/intern/cycles/device/device_split_kernel.cpp (+283, -0) (View)
/intern/cycles/device/device_split_kernel.h (+126, -0) (View)
/intern/cycles/kernel/split/kernel_queue_enqueue.h (+102, -0) (View)
/intern/cycles/kernel/split/kernel_split_data.h (+153, -0) (View)

37 Modified Paths:

/intern/cycles/device/CMakeLists.txt (+3, -0) (Diff)
/intern/cycles/device/opencl/opencl.h (+30, -28) (Diff)
/intern/cycles/device/opencl/opencl_base.cpp (+3, -1) (Diff)
/intern/cycles/device/opencl/opencl_mega.cpp (+2, -1) (Diff)
/intern/cycles/device/opencl/opencl_split.cpp (+209, -1193) (Diff)
/intern/cycles/kernel/CMakeLists.txt (+2, -0) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel.cl (+9, -9) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_background_buffer_update.cl (+5, -104) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_data_init.cl (+18, -46) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_direct_lighting.cl (+5, -66) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_holdout_emission_blurring_pathtermination_ao.cl (+5, -102) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_lamp_emission.cl (+5, -59) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_next_iteration_setup.cl (+5, -93) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_queue_enqueue.cl (+6, -86) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_scene_intersect.cl (+5, -59) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_shader_eval.cl (+5, -47) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked.cl (+5, -44) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_sum_all_radiance.cl (+5, -17) (Diff)
/intern/cycles/kernel/kernel_compat_opencl.h (+10, -0) (Diff)
/intern/cycles/kernel/kernel_globals.h (+2, -0) (Diff)
/intern/cycles/kernel/kernel_passes.h (+6, -6) (Diff)
/intern/cycles/kernel/kernel_queues.h (+20, -13) (Diff)
/intern/cycles/kernel/kernel_shadow.h (+3, -3) (Diff)
/intern/cycles/kernel/kernel_types.h (+4, -2) (Diff)
/intern/cycles/kernel/kernel_work_stealing.h (+68, -143) (Diff)
/intern/cycles/kernel/split/kernel_background_buffer_update.h (+85, -84) (Diff)
/intern/cycles/kernel/split/kernel_data_init.h (+117, -138) (Diff)
/intern/cycles/kernel/split/kernel_direct_lighting.h (+58, -20) (Diff)
/intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h (+92, -57) (Diff)
/intern/cycles/kernel/split/kernel_lamp_emission.h (+36, -22) (Diff)
/intern/cycles/kernel/split/kernel_next_iteration_setup.h (+81, -37) (Diff)
/intern/cycles/kernel/split/kernel_scene_intersect.h (+34, -24) (Diff)
/intern/cycles/kernel/split/kernel_shader_eval.h (+41, -17) (Diff)
/intern/cycles/kernel/split/kernel_shadow_blocked.h (+41, -15) (Diff)
/intern/cycles/kernel/split/kernel_split_common.h (+3, -1) (Diff)
/intern/cycles/kernel/split/kernel_sum_all_radiance.h (+27, -29) (Diff)
/intern/cycles/util/util_types.h (+15, -5) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021