Blender Git Loki
Git Commits -> Revision ec8ae4d
Revision ec8ae4d by Mai Lavelle (master) August 8, 2017, 11:12 (GMT) |
Cycles: Pack kernel textures into buffers for OpenCL Image textures were being packed into a single buffer for OpenCL, which limited the amount of memory available for images to the size of one buffer (usually 4gb on AMD hardware). By packing textures into multiple buffers that limit is removed, while simultaneously reducing the number of buffers that need to be passed to each kernel. Benchmarks were within 2%. Fixes T51554. Differential Revision: https://developer.blender.org/D2745 |
Commit Details:
Full Hash: ec8ae4d5e9f735ab5aeb149dea8aa47ab8f8f977
Parent Commit: b53e35c
Lines Changed: +685, -328
2 Added Paths:
/intern/cycles/device/opencl/memory_manager.cpp (+253, -0) (View)
/intern/cycles/device/opencl/memory_manager.h (+105, -0) (View)
/intern/cycles/device/opencl/memory_manager.h (+105, -0) (View)
23 Modified Paths:
/intern/cycles/device/CMakeLists.txt (+2, -0) (Diff)
/intern/cycles/device/device.cpp (+0, -2) (Diff)
/intern/cycles/device/device.h (+0, -2) (Diff)
/intern/cycles/device/device_cpu.cpp (+0, -1) (Diff)
/intern/cycles/device/device_cuda.cpp (+0, -1) (Diff)
/intern/cycles/device/device_opencl.cpp (+0, -1) (Diff)
/intern/cycles/device/opencl/opencl.h (+43, -0) (Diff)
/intern/cycles/device/opencl/opencl_base.cpp (+126, -23) (Diff)
/intern/cycles/device/opencl/opencl_mega.cpp (+1, -4) (Diff)
/intern/cycles/device/opencl/opencl_split.cpp (+14, -11) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel.cl (+15, -30) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_data_init.cl (+2, -9) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_split_function.h (+2, -7) (Diff)
/intern/cycles/kernel/kernel_compat_opencl.h (+1, -1) (Diff)
/intern/cycles/kernel/kernel_globals.h (+67, -1) (Diff)
/intern/cycles/kernel/kernel_image_opencl.h (+42, -24) (Diff)
/intern/cycles/kernel/kernel_textures.h (+2, -9) (Diff)
/intern/cycles/kernel/split/kernel_data_init.h (+3, -6) (Diff)
/intern/cycles/render/image.cpp (+6, -162) (Diff)
/intern/cycles/render/image.h (+0, -15) (Diff)
/intern/cycles/render/mesh.cpp (+1, -10) (Diff)
/intern/cycles/render/scene.cpp (+0, -2) (Diff)
/intern/cycles/render/scene.h (+0, -7) (Diff)
/intern/cycles/device/device.cpp (+0, -2) (Diff)
/intern/cycles/device/device.h (+0, -2) (Diff)
/intern/cycles/device/device_cpu.cpp (+0, -1) (Diff)
/intern/cycles/device/device_cuda.cpp (+0, -1) (Diff)
/intern/cycles/device/device_opencl.cpp (+0, -1) (Diff)
/intern/cycles/device/opencl/opencl.h (+43, -0) (Diff)
/intern/cycles/device/opencl/opencl_base.cpp (+126, -23) (Diff)
/intern/cycles/device/opencl/opencl_mega.cpp (+1, -4) (Diff)
/intern/cycles/device/opencl/opencl_split.cpp (+14, -11) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel.cl (+15, -30) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_data_init.cl (+2, -9) (Diff)
/intern/cycles/kernel/kernels/opencl/kernel_split_function.h (+2, -7) (Diff)
/intern/cycles/kernel/kernel_compat_opencl.h (+1, -1) (Diff)
/intern/cycles/kernel/kernel_globals.h (+67, -1) (Diff)
/intern/cycles/kernel/kernel_image_opencl.h (+42, -24) (Diff)
/intern/cycles/kernel/kernel_textures.h (+2, -9) (Diff)
/intern/cycles/kernel/split/kernel_data_init.h (+3, -6) (Diff)
/intern/cycles/render/image.cpp (+6, -162) (Diff)
/intern/cycles/render/image.h (+0, -15) (Diff)
/intern/cycles/render/mesh.cpp (+1, -10) (Diff)
/intern/cycles/render/scene.cpp (+0, -2) (Diff)
/intern/cycles/render/scene.h (+0, -7) (Diff)