Blender Git Loki
Git Commits -> Revision 9adfd27
Revision 9adfd27 by Manuel Castilla (master) June 1, 2021, 08:51 (GMT) |
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. Operations are multi-threaded but do not run in parallel as Tiled (will be done in another patch). 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. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D11113 |
Commit Details:
Full Hash: 9adfd278f7487798f1b0124c7e44cf9934b4ba54
Parent Commit: 930ad92
Lines Changed: +1629, -158
12 Added Paths:
/source/blender/compositor/intern/COM_BufferOperation.cc (+65, -0) (View)
/source/blender/compositor/intern/COM_BufferOperation.h (+37, -0) (View)
/source/blender/compositor/intern/COM_ExecutionModel.cc (+48, -0) (View)
/source/blender/compositor/intern/COM_ExecutionModel.h (+84, -0) (View)
/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc (+328, -0) (View)
/source/blender/compositor/intern/COM_FullFrameExecutionModel.h (+89, -0) (View)
/source/blender/compositor/intern/COM_MultiThreadedOperation.cc (+26, -0) (View)
/source/blender/compositor/intern/COM_MultiThreadedOperation.h (+73, -0) (View)
/source/blender/compositor/intern/COM_SharedOperationBuffers.cc (+131, -0) (View)
/source/blender/compositor/intern/COM_SharedOperationBuffers.h (+71, -0) (View)
/source/blender/compositor/intern/COM_TiledExecutionModel.cc (+158, -0) (View)
/source/blender/compositor/intern/COM_TiledExecutionModel.h (+54, -0) (View)
/source/blender/compositor/intern/COM_BufferOperation.h (+37, -0) (View)
/source/blender/compositor/intern/COM_ExecutionModel.cc (+48, -0) (View)
/source/blender/compositor/intern/COM_ExecutionModel.h (+84, -0) (View)
/source/blender/compositor/intern/COM_FullFrameExecutionModel.cc (+328, -0) (View)
/source/blender/compositor/intern/COM_FullFrameExecutionModel.h (+89, -0) (View)
/source/blender/compositor/intern/COM_MultiThreadedOperation.cc (+26, -0) (View)
/source/blender/compositor/intern/COM_MultiThreadedOperation.h (+73, -0) (View)
/source/blender/compositor/intern/COM_SharedOperationBuffers.cc (+131, -0) (View)
/source/blender/compositor/intern/COM_SharedOperationBuffers.h (+71, -0) (View)
/source/blender/compositor/intern/COM_TiledExecutionModel.cc (+158, -0) (View)
/source/blender/compositor/intern/COM_TiledExecutionModel.h (+54, -0) (View)
24 Modified Paths:
/release/scripts/startup/bl_ui/space_node.py (+4, -0) (Diff)
/release/scripts/startup/bl_ui/space_userpref.py (+1, -0) (Diff)
/source/blender/compositor/CMakeLists.txt (+12, -0) (Diff)
/source/blender/compositor/COM_defines.h (+10, -0) (Diff)
/source/blender/compositor/intern/COM_CompositorContext.cc (+18, -0) (Diff)
/source/blender/compositor/intern/COM_CompositorContext.h (+5, -0) (Diff)
/source/blender/compositor/intern/COM_CPUDevice.cc (+18, -5) (Diff)
/source/blender/compositor/intern/COM_Debug.cc (+22, -15) (Diff)
/source/blender/compositor/intern/COM_Debug.h (+1, -1) (Diff)
/source/blender/compositor/intern/COM_Enums.h (+15, -0) (Diff)
/source/blender/compositor/intern/COM_ExecutionGroup.cc (+1, -0) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystem.cc (+18, -125) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystem.h (+22, -3) (Diff)
/source/blender/compositor/intern/COM_NodeOperation.cc (+176, -0) (Diff)
/source/blender/compositor/intern/COM_NodeOperation.h (+66, -0) (Diff)
/source/blender/compositor/intern/COM_NodeOperationBuilder.cc (+8, -4) (Diff)
/source/blender/compositor/intern/COM_WorkPackage.h (+13, -0) (Diff)
/source/blender/compositor/intern/COM_WorkScheduler.cc (+11, -2) (Diff)
/source/blender/compositor/intern/COM_WorkScheduler.h (+2, -0) (Diff)
/source/blender/compositor/nodes/COM_TranslateNode.cc (+4, -1) (Diff)
/source/blender/makesdna/DNA_node_types.h (+8, -1) (Diff)
/source/blender/makesdna/DNA_userdef_types.h (+2, -1) (Diff)
/source/blender/makesrna/intern/rna_nodetree.c (+20, -0) (Diff)
/source/blender/makesrna/intern/rna_userdef.c (+8, -0) (Diff)
/release/scripts/startup/bl_ui/space_userpref.py (+1, -0) (Diff)
/source/blender/compositor/CMakeLists.txt (+12, -0) (Diff)
/source/blender/compositor/COM_defines.h (+10, -0) (Diff)
/source/blender/compositor/intern/COM_CompositorContext.cc (+18, -0) (Diff)
/source/blender/compositor/intern/COM_CompositorContext.h (+5, -0) (Diff)
/source/blender/compositor/intern/COM_CPUDevice.cc (+18, -5) (Diff)
/source/blender/compositor/intern/COM_Debug.cc (+22, -15) (Diff)
/source/blender/compositor/intern/COM_Debug.h (+1, -1) (Diff)
/source/blender/compositor/intern/COM_Enums.h (+15, -0) (Diff)
/source/blender/compositor/intern/COM_ExecutionGroup.cc (+1, -0) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystem.cc (+18, -125) (Diff)
/source/blender/compositor/intern/COM_ExecutionSystem.h (+22, -3) (Diff)
/source/blender/compositor/intern/COM_NodeOperation.cc (+176, -0) (Diff)
/source/blender/compositor/intern/COM_NodeOperation.h (+66, -0) (Diff)
/source/blender/compositor/intern/COM_NodeOperationBuilder.cc (+8, -4) (Diff)
/source/blender/compositor/intern/COM_WorkPackage.h (+13, -0) (Diff)
/source/blender/compositor/intern/COM_WorkScheduler.cc (+11, -2) (Diff)
/source/blender/compositor/intern/COM_WorkScheduler.h (+2, -0) (Diff)
/source/blender/compositor/nodes/COM_TranslateNode.cc (+4, -1) (Diff)
/source/blender/makesdna/DNA_node_types.h (+8, -1) (Diff)
/source/blender/makesdna/DNA_userdef_types.h (+2, -1) (Diff)
/source/blender/makesrna/intern/rna_nodetree.c (+20, -0) (Diff)
/source/blender/makesrna/intern/rna_userdef.c (+8, -0) (Diff)