Blender Git Loki
Git Commits -> Revision 0f56987
Revision 0f56987 by George Kyriazis (cycles_kernel_split) March 30, 2015, 10:24 (GMT) |
Cycles: OpenCL kernel-splitting work This patch contains work to split the OpenCL mega-kernel into separate kernels to obtain better GPU utilization and therefore performance. A description of the optimizations included in this patch is located at https://docs.google.com/document/d/1LuXW-CV-sVJkQaEGZlMJ86jZ8FmoPfecaMdR-oiWbUY/edit?usp=sharing |
Commit Details:
Full Hash: 0f56987ebabdef2d0d71665c86b047e28926aef8
Parent Commit: 4b88541
Committed By: Sergey Sharybin
Lines Changed: +6738, -1140
15 Added Paths:
/intern/cycles/kernel/kernel_Background_BufferUpdate.cl (+283, -0) (View)
/intern/cycles/kernel/kernel_DataInit.cl (+443, -0) (View)
/intern/cycles/kernel/kernel_DirectLighting.cl (+121, -0) (View)
/intern/cycles/kernel/kernel_Holdout_Emission_Blurring_Pathtermination_AO.cl (+267, -0) (View)
/intern/cycles/kernel/kernel_LampEmission.cl (+193, -0) (View)
/intern/cycles/kernel/kernel_NextIterationSetUp.cl (+160, -0) (View)
/intern/cycles/kernel/kernel_QueueEnqueue.cl (+82, -0) (View)
/intern/cycles/kernel/kernel_queues.h (+116, -0) (View)
/intern/cycles/kernel/kernel_SceneIntersect.cl (+142, -0) (View)
/intern/cycles/kernel/kernel_ShaderEval.cl (+77, -0) (View)
/intern/cycles/kernel/kernel_ShadowBlocked.cl (+110, -0) (View)
/intern/cycles/kernel/kernel_split.h (+47, -0) (View)
/intern/cycles/kernel/kernel_Subsurface.cl (+55, -0) (View)
/intern/cycles/kernel/kernel_SumAllRadiance.cl (+40, -0) (View)
/intern/cycles/kernel/kernel_work_stealing.h (+127, -0) (View)
/intern/cycles/kernel/kernel_DataInit.cl (+443, -0) (View)
/intern/cycles/kernel/kernel_DirectLighting.cl (+121, -0) (View)
/intern/cycles/kernel/kernel_Holdout_Emission_Blurring_Pathtermination_AO.cl (+267, -0) (View)
/intern/cycles/kernel/kernel_LampEmission.cl (+193, -0) (View)
/intern/cycles/kernel/kernel_NextIterationSetUp.cl (+160, -0) (View)
/intern/cycles/kernel/kernel_QueueEnqueue.cl (+82, -0) (View)
/intern/cycles/kernel/kernel_queues.h (+116, -0) (View)
/intern/cycles/kernel/kernel_SceneIntersect.cl (+142, -0) (View)
/intern/cycles/kernel/kernel_ShaderEval.cl (+77, -0) (View)
/intern/cycles/kernel/kernel_ShadowBlocked.cl (+110, -0) (View)
/intern/cycles/kernel/kernel_split.h (+47, -0) (View)
/intern/cycles/kernel/kernel_Subsurface.cl (+55, -0) (View)
/intern/cycles/kernel/kernel_SumAllRadiance.cl (+40, -0) (View)
/intern/cycles/kernel/kernel_work_stealing.h (+127, -0) (View)
96 Modified Paths:
/intern/cycles/device/device.h (+10, -0) (Diff)
/intern/cycles/device/device_opencl.cpp (+2440, -36) (Diff)
/intern/cycles/kernel/closure/bsdf.h (+53, -53) (Diff)
/intern/cycles/kernel/closure/bsdf_ashikhmin_shirley.h (+6, -6) (Diff)
/intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h (+4, -4) (Diff)
/intern/cycles/kernel/closure/bsdf_diffuse.h (+8, -8) (Diff)
/intern/cycles/kernel/closure/bsdf_diffuse_ramp.h (+5, -5) (Diff)
/intern/cycles/kernel/closure/bsdf_hair.h (+8, -9) (Diff)
/intern/cycles/kernel/closure/bsdf_microfacet.h (+16, -16) (Diff)
/intern/cycles/kernel/closure/bsdf_oren_nayar.h (+5, -5) (Diff)
/intern/cycles/kernel/closure/bsdf_phong_ramp.h (+6, -6) (Diff)
/intern/cycles/kernel/closure/bsdf_reflection.h (+4, -4) (Diff)
/intern/cycles/kernel/closure/bsdf_refraction.h (+4, -4) (Diff)
/intern/cycles/kernel/closure/bsdf_toon.h (+8, -8) (Diff)
/intern/cycles/kernel/closure/bsdf_transparent.h (+4, -4) (Diff)
/intern/cycles/kernel/closure/bssrdf.h (+10, -10) (Diff)
/intern/cycles/kernel/CMakeLists.txt (+28, -0) (Diff)
/intern/cycles/kernel/geom/geom_attribute.h (+7, -7) (Diff)
/intern/cycles/kernel/geom/geom_bvh.h (+4, -4) (Diff)
/intern/cycles/kernel/geom/geom_bvh_shadow.h (+2, -2) (Diff)
/intern/cycles/kernel/geom/geom_bvh_subsurface.h (+2, -2) (Diff)
/intern/cycles/kernel/geom/geom_bvh_traversal.h (+4, -4) (Diff)
/intern/cycles/kernel/geom/geom_bvh_volume.h (+2, -2) (Diff)
/intern/cycles/kernel/geom/geom_curve.h (+12, -9) (Diff)
/intern/cycles/kernel/geom/geom_motion_curve.h (+5, -5) (Diff)
/intern/cycles/kernel/geom/geom_motion_triangle.h (+27, -27) (Diff)
/intern/cycles/kernel/geom/geom_object.h (+73, -60) (Diff)
/intern/cycles/kernel/geom/geom_primitive.h (+34, -33) (Diff)
/intern/cycles/kernel/geom/geom_qbvh.h (+2, -2) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_traversal.h (+1, -1) (Diff)
/intern/cycles/kernel/geom/geom_triangle.h (+33, -29) (Diff)
/intern/cycles/kernel/geom/geom_triangle_intersect.h (+6, -6) (Diff)
/intern/cycles/kernel/geom/geom_volume.h (+3, -3) (Diff)
/intern/cycles/kernel/kernel.cl (+0, -1) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+16, -9) (Diff)
/intern/cycles/kernel/kernel_camera.h (+14, -14) (Diff)
/intern/cycles/kernel/kernel_differential.h (+3, -3) (Diff)
/intern/cycles/kernel/kernel_emission.h (+76, -17) (Diff)
/intern/cycles/kernel/kernel_globals.h (+3, -2) (Diff)
/intern/cycles/kernel/kernel_light.h (+12, -12) (Diff)
/intern/cycles/kernel/kernel_passes.h (+58, -10) (Diff)
/intern/cycles/kernel/kernel_path.h (+19, -17) (Diff)
/intern/cycles/kernel/kernel_path_state.h (+4, -4) (Diff)
/intern/cycles/kernel/kernel_path_surface.h (+23, -21) (Diff)
/intern/cycles/kernel/kernel_path_volume.h (+7, -7) (Diff)
/intern/cycles/kernel/kernel_projection.h (+2, -2) (Diff)
/intern/cycles/kernel/kernel_random.h (+20, -16) (Diff)
/intern/cycles/kernel/kernel_shader.h (+238, -187) (Diff)
/intern/cycles/kernel/kernel_shadow.h (+91, -2) (Diff)
/intern/cycles/kernel/kernel_subsurface.h (+4, -4) (Diff)
/intern/cycles/kernel/kernel_types.h (+189, -17) (Diff)
/intern/cycles/kernel/kernel_volume.h (+15, -15) (Diff)
/intern/cycles/kernel/svm/svm.h (+226, -8) (Diff)
/intern/cycles/kernel/svm/svm_attribute.h (+8, -9) (Diff)
/intern/cycles/kernel/svm/svm_blackbody.h (+5, -6) (Diff)
/intern/cycles/kernel/svm/svm_brick.h (+10, -10) (Diff)
/intern/cycles/kernel/svm/svm_brightness.h (+2, -2) (Diff)
/intern/cycles/kernel/svm/svm_camera.h (+5, -5) (Diff)
/intern/cycles/kernel/svm/svm_checker.h (+3, -3) (Diff)
/intern/cycles/kernel/svm/svm_closure.h (+107, -99) (Diff)
/intern/cycles/kernel/svm/svm_convert.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_displace.h (+7, -9) (Diff)
/intern/cycles/kernel/svm/svm_fresnel.h (+10, -10) (Diff)
/intern/cycles/kernel/svm/svm_gamma.h (+5, -5) (Diff)
/intern/cycles/kernel/svm/svm_geometry.h (+28, -29) (Diff)
/intern/cycles/kernel/svm/svm_gradient.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_hsv.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_image.h (+10, -10) (Diff)
/intern/cycles/kernel/svm/svm_invert.h (+2, -2) (Diff)
/intern/cycles/kernel/svm/svm_light_path.h (+9, -9) (Diff)
/intern/cycles/kernel/svm/svm_magic.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_mapping.h (+2, -2) (Diff)
/intern/cycles/kernel/svm/svm_math.h (+2, -2) (Diff)
/intern/cycles/kernel/svm/svm_mix.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_musgrave.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_noisetex.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_normal.h (+3, -3) (Diff)
/intern/cycles/kernel/svm/svm_ramp.h (+4, -4) (Diff)
/intern/cycles/kernel/svm/svm_sepcomb_hsv.h (+10, -10) (Diff)
/intern/cycles/kernel/svm/svm_sepcomb_vector.h (+6, -6) (Diff)
/intern/cycles/kernel/svm/svm_sky.h (+12, -12) (Diff)
/intern/cycles/kernel/svm/svm_tex_coord.h (+78, -66) (Diff)
/intern/cycles/kernel/svm/svm_types.h (+6, -1) (Diff)
/intern/cycles/kernel/svm/svm_value.h (+2, -2) (Diff)
/intern/cycles/kernel/svm/svm_vector_transform.h (+15, -11) (Diff)
/intern/cycles/kernel/svm/svm_voronoi.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_wave.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_wavelength.h (+6, -6) (Diff)
/intern/cycles/kernel/svm/svm_wireframe.h (+112, -56) (Diff)
/intern/cycles/render/buffers.h (+3, -0) (Diff)
/intern/cycles/render/graph.cpp (+1, -0) (Diff)
/intern/cycles/render/graph.h (+2, -0) (Diff)
/intern/cycles/render/nodes.cpp (+76, -0) (Diff)
/intern/cycles/render/session.cpp (+47, -0) (Diff)
/intern/cycles/render/svm.cpp (+11, -0) (Diff)
/intern/cycles/render/tile.h (+1, -0) (Diff)
/intern/cycles/device/device_opencl.cpp (+2440, -36) (Diff)
/intern/cycles/kernel/closure/bsdf.h (+53, -53) (Diff)
/intern/cycles/kernel/closure/bsdf_ashikhmin_shirley.h (+6, -6) (Diff)
/intern/cycles/kernel/closure/bsdf_ashikhmin_velvet.h (+4, -4) (Diff)
/intern/cycles/kernel/closure/bsdf_diffuse.h (+8, -8) (Diff)
/intern/cycles/kernel/closure/bsdf_diffuse_ramp.h (+5, -5) (Diff)
/intern/cycles/kernel/closure/bsdf_hair.h (+8, -9) (Diff)
/intern/cycles/kernel/closure/bsdf_microfacet.h (+16, -16) (Diff)
/intern/cycles/kernel/closure/bsdf_oren_nayar.h (+5, -5) (Diff)
/intern/cycles/kernel/closure/bsdf_phong_ramp.h (+6, -6) (Diff)
/intern/cycles/kernel/closure/bsdf_reflection.h (+4, -4) (Diff)
/intern/cycles/kernel/closure/bsdf_refraction.h (+4, -4) (Diff)
/intern/cycles/kernel/closure/bsdf_toon.h (+8, -8) (Diff)
/intern/cycles/kernel/closure/bsdf_transparent.h (+4, -4) (Diff)
/intern/cycles/kernel/closure/bssrdf.h (+10, -10) (Diff)
/intern/cycles/kernel/CMakeLists.txt (+28, -0) (Diff)
/intern/cycles/kernel/geom/geom_attribute.h (+7, -7) (Diff)
/intern/cycles/kernel/geom/geom_bvh.h (+4, -4) (Diff)
/intern/cycles/kernel/geom/geom_bvh_shadow.h (+2, -2) (Diff)
/intern/cycles/kernel/geom/geom_bvh_subsurface.h (+2, -2) (Diff)
/intern/cycles/kernel/geom/geom_bvh_traversal.h (+4, -4) (Diff)
/intern/cycles/kernel/geom/geom_bvh_volume.h (+2, -2) (Diff)
/intern/cycles/kernel/geom/geom_curve.h (+12, -9) (Diff)
/intern/cycles/kernel/geom/geom_motion_curve.h (+5, -5) (Diff)
/intern/cycles/kernel/geom/geom_motion_triangle.h (+27, -27) (Diff)
/intern/cycles/kernel/geom/geom_object.h (+73, -60) (Diff)
/intern/cycles/kernel/geom/geom_primitive.h (+34, -33) (Diff)
/intern/cycles/kernel/geom/geom_qbvh.h (+2, -2) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_traversal.h (+1, -1) (Diff)
/intern/cycles/kernel/geom/geom_triangle.h (+33, -29) (Diff)
/intern/cycles/kernel/geom/geom_triangle_intersect.h (+6, -6) (Diff)
/intern/cycles/kernel/geom/geom_volume.h (+3, -3) (Diff)
/intern/cycles/kernel/kernel.cl (+0, -1) (Diff)
/intern/cycles/kernel/kernel_accumulate.h (+16, -9) (Diff)
/intern/cycles/kernel/kernel_camera.h (+14, -14) (Diff)
/intern/cycles/kernel/kernel_differential.h (+3, -3) (Diff)
/intern/cycles/kernel/kernel_emission.h (+76, -17) (Diff)
/intern/cycles/kernel/kernel_globals.h (+3, -2) (Diff)
/intern/cycles/kernel/kernel_light.h (+12, -12) (Diff)
/intern/cycles/kernel/kernel_passes.h (+58, -10) (Diff)
/intern/cycles/kernel/kernel_path.h (+19, -17) (Diff)
/intern/cycles/kernel/kernel_path_state.h (+4, -4) (Diff)
/intern/cycles/kernel/kernel_path_surface.h (+23, -21) (Diff)
/intern/cycles/kernel/kernel_path_volume.h (+7, -7) (Diff)
/intern/cycles/kernel/kernel_projection.h (+2, -2) (Diff)
/intern/cycles/kernel/kernel_random.h (+20, -16) (Diff)
/intern/cycles/kernel/kernel_shader.h (+238, -187) (Diff)
/intern/cycles/kernel/kernel_shadow.h (+91, -2) (Diff)
/intern/cycles/kernel/kernel_subsurface.h (+4, -4) (Diff)
/intern/cycles/kernel/kernel_types.h (+189, -17) (Diff)
/intern/cycles/kernel/kernel_volume.h (+15, -15) (Diff)
/intern/cycles/kernel/svm/svm.h (+226, -8) (Diff)
/intern/cycles/kernel/svm/svm_attribute.h (+8, -9) (Diff)
/intern/cycles/kernel/svm/svm_blackbody.h (+5, -6) (Diff)
/intern/cycles/kernel/svm/svm_brick.h (+10, -10) (Diff)
/intern/cycles/kernel/svm/svm_brightness.h (+2, -2) (Diff)
/intern/cycles/kernel/svm/svm_camera.h (+5, -5) (Diff)
/intern/cycles/kernel/svm/svm_checker.h (+3, -3) (Diff)
/intern/cycles/kernel/svm/svm_closure.h (+107, -99) (Diff)
/intern/cycles/kernel/svm/svm_convert.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_displace.h (+7, -9) (Diff)
/intern/cycles/kernel/svm/svm_fresnel.h (+10, -10) (Diff)
/intern/cycles/kernel/svm/svm_gamma.h (+5, -5) (Diff)
/intern/cycles/kernel/svm/svm_geometry.h (+28, -29) (Diff)
/intern/cycles/kernel/svm/svm_gradient.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_hsv.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_image.h (+10, -10) (Diff)
/intern/cycles/kernel/svm/svm_invert.h (+2, -2) (Diff)
/intern/cycles/kernel/svm/svm_light_path.h (+9, -9) (Diff)
/intern/cycles/kernel/svm/svm_magic.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_mapping.h (+2, -2) (Diff)
/intern/cycles/kernel/svm/svm_math.h (+2, -2) (Diff)
/intern/cycles/kernel/svm/svm_mix.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_musgrave.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_noisetex.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_normal.h (+3, -3) (Diff)
/intern/cycles/kernel/svm/svm_ramp.h (+4, -4) (Diff)
/intern/cycles/kernel/svm/svm_sepcomb_hsv.h (+10, -10) (Diff)
/intern/cycles/kernel/svm/svm_sepcomb_vector.h (+6, -6) (Diff)
/intern/cycles/kernel/svm/svm_sky.h (+12, -12) (Diff)
/intern/cycles/kernel/svm/svm_tex_coord.h (+78, -66) (Diff)
/intern/cycles/kernel/svm/svm_types.h (+6, -1) (Diff)
/intern/cycles/kernel/svm/svm_value.h (+2, -2) (Diff)
/intern/cycles/kernel/svm/svm_vector_transform.h (+15, -11) (Diff)
/intern/cycles/kernel/svm/svm_voronoi.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_wave.h (+1, -1) (Diff)
/intern/cycles/kernel/svm/svm_wavelength.h (+6, -6) (Diff)
/intern/cycles/kernel/svm/svm_wireframe.h (+112, -56) (Diff)
/intern/cycles/render/buffers.h (+3, -0) (Diff)
/intern/cycles/render/graph.cpp (+1, -0) (Diff)
/intern/cycles/render/graph.h (+2, -0) (Diff)
/intern/cycles/render/nodes.cpp (+76, -0) (Diff)
/intern/cycles/render/session.cpp (+47, -0) (Diff)
/intern/cycles/render/svm.cpp (+11, -0) (Diff)
/intern/cycles/render/tile.h (+1, -0) (Diff)