diff options
author | Manuel Castilla <manzanillawork@gmail.com> | 2021-06-09 11:19:28 +0300 |
---|---|---|
committer | Manuel Castilla <manzanillawork@gmail.com> | 2021-06-09 12:02:40 +0300 |
commit | d7c812f15befb161d47451afdeba9d070a7d81a7 (patch) | |
tree | ba95d7e7586699725d9d6d630bb4d56fcd8a0032 /source/blender/compositor/intern/COM_FullFrameExecutionModel.h | |
parent | 3ba16afa1e5065e9f61ee6921421efd8641807d3 (diff) |
Compositor: Refactor recursive methods to iterative
In order to reduce stack size this patch converts full frame
recursive methods into iterative.
- No functional changes.
- No performance changes.
- Memory peak may slightly vary depending on the tree because
now breadth-first traversal is used instead of depth-first.
Tests in D11113 have same results except for test1 memory peak:
360MBs instead of 329.50MBs.
Reviewed By: Jeroen Bakker (jbakker)
Differential Revision: https://developer.blender.org/D11515
Diffstat (limited to 'source/blender/compositor/intern/COM_FullFrameExecutionModel.h')
-rw-r--r-- | source/blender/compositor/intern/COM_FullFrameExecutionModel.h | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/source/blender/compositor/intern/COM_FullFrameExecutionModel.h b/source/blender/compositor/intern/COM_FullFrameExecutionModel.h index 2c0d5e0460a..e68ad93b407 100644 --- a/source/blender/compositor/intern/COM_FullFrameExecutionModel.h +++ b/source/blender/compositor/intern/COM_FullFrameExecutionModel.h @@ -67,8 +67,7 @@ class FullFrameExecutionModel : public ExecutionModel { private: void determine_areas_to_render_and_reads(); void render_operations(ExecutionSystem &exec_system); - - void ensure_inputs_rendered(NodeOperation *op, ExecutionSystem &exec_system); + void render_output_dependencies(NodeOperation *output_op, ExecutionSystem &exec_system); Vector<MemoryBuffer *> get_input_buffers(NodeOperation *op); MemoryBuffer *create_operation_buffer(NodeOperation *op); void render_operation(NodeOperation *op, ExecutionSystem &exec_system); @@ -76,8 +75,8 @@ class FullFrameExecutionModel : public ExecutionModel { void operation_finished(NodeOperation *operation); void get_output_render_area(NodeOperation *output_op, rcti &r_area); - void determine_areas_to_render(NodeOperation *operation, const rcti &render_area); - void determine_reads(NodeOperation *operation); + void determine_areas_to_render(NodeOperation *output_op, const rcti &output_area); + void determine_reads(NodeOperation *output_op); void update_progress_bar(); |