Blender Git Loki
Git Commits -> Revision fff5aa5
Revision fff5aa5 by Manuel Castilla (compositor-full-frame) April 28, 2021, 15:13 (GMT) |
[WIP] Compositor: Full-frame base system This patch adds the base code needed to make the full-frame system work for both current tiled/per-pixel implementation of operations and full-frame. Two execution models: - Tiled: Current implementation. Renders execution groups in tiles from outputs to input. Not all operations are buffered. Runs the tiled/per-pixel implementation. - FullFrame: All operations are buffered. Fully renders operations from inputs to outputs. Runs full-frame implementation of operations if available otherwise the current tiled/per-pixel. Creates output buffers on first read and free them as soon as all its readers have finished, reducing peak memory usage of complex/long trees. This should allow us to convert operations to full-frame in small steps with the system already working and solve the problem of high memory usage. FullFrame breaking changes respect Tiled system, mainly: - Translate, Rotate, Scale, and Transform take effect immediately instead of next buffered operation. - Any sampling is always done over inputs instead of last buffered operation. Differential Revision: https://developer.blender.org/D11113 |
Commit Details:
Full Hash: fff5aa5a9f72314fa43b680225b1c7eae98ddeed
Parent Commit: 1b5b4b0
Lines Changed: +880, -40
6 Added Paths:
/source/blender/compositor/intern/COM_BufferOperation.cc (+45, -0) (View)
/source/blender/compositor/intern/COM_BufferOperation.h (+37, -0) (View)
/source/blender/compositor/intern/COM_MultiThreadedOperation.cc (+25, -0) (View)
/source/blender/compositor/intern/COM_MultiThreadedOperation.h (+73, -0) (View)
/source/blender/compositor/intern/COM_OutputManager.cc (+99, -0) (View)
/source/blender/compositor/intern/COM_OutputManager.h (+67, -0) (View)
/source/blender/compositor/intern/COM_BufferOperation.h (+37, -0) (View)
/source/blender/compositor/intern/COM_MultiThreadedOperation.cc (+25, -0) (View)
/source/blender/compositor/intern/COM_MultiThreadedOperation.h (+73, -0) (View)
/source/blender/compositor/intern/COM_OutputManager.cc (+99, -0) (View)
/source/blender/compositor/intern/COM_OutputManager.h (+67, -0) (View)
12 Modified Paths:
/source/blender/compositor/CMakeLists.txt (+6, -0) (Diff)
/source/blender/compositor/COM_defines.h (+14, -0) (Diff)
/source/blender/compositor/intern/COM_compositor.cc (+20, -5) (Diff)
/source/blender/compositor/intern/COM_CPUDevice.cc (+11, -5) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystem.cc (+182, -22) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystem.h (+51, -1) (Diff)
/source/blender/compositor/intern/COM_NodeOperation.cc (+174, -0) (Diff)
/source/blender/compositor/intern/COM_NodeOperation.h (+53, -0) (Diff)
/source/blender/compositor/intern/COM_NodeOperationBuilder.cc (+8, -4) (Diff)
/source/blender/compositor/intern/COM_WorkPackage.h (+8, -0) (Diff)
/source/blender/compositor/intern/COM_WorkScheduler.cc (+3, -2) (Diff)
/source/blender/compositor/nodes/COM_TranslateNode.cc (+4, -1) (Diff)
/source/blender/compositor/COM_defines.h (+14, -0) (Diff)
/source/blender/compositor/intern/COM_compositor.cc (+20, -5) (Diff)
/source/blender/compositor/intern/COM_CPUDevice.cc (+11, -5) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystem.cc (+182, -22) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystem.h (+51, -1) (Diff)
/source/blender/compositor/intern/COM_NodeOperation.cc (+174, -0) (Diff)
/source/blender/compositor/intern/COM_NodeOperation.h (+53, -0) (Diff)
/source/blender/compositor/intern/COM_NodeOperationBuilder.cc (+8, -4) (Diff)
/source/blender/compositor/intern/COM_WorkPackage.h (+8, -0) (Diff)
/source/blender/compositor/intern/COM_WorkScheduler.cc (+3, -2) (Diff)
/source/blender/compositor/nodes/COM_TranslateNode.cc (+4, -1) (Diff)