Compositor: Allow inter-operation canceling #119917

Merged
Omar Emara merged 4 commits from OmarEmaraDev/blender:gpu-compositor-better-interactivity into main 2024-04-08 16:24:09 +02:00
2 changed files with 15 additions and 2 deletions
Showing only changes of commit affd409e89 - Show all commits

View File

@ -32,11 +32,13 @@ void Evaluator::evaluate()
if (!is_compiled_) {
compile_and_evaluate();
is_compiled_ = true;
return;
}
for (const std::unique_ptr<Operation> &operation : operations_stream_) {
if (context_.is_canceled()) {
return;
}
operation->evaluate();
}
}
@ -68,7 +70,7 @@ void Evaluator::compile_and_evaluate()
{
derived_node_tree_ = std::make_unique<DerivedNodeTree>(context_.get_node_tree());
if (!validate_node_tree()) {
if (!validate_node_tree() || context_.is_canceled()) {
return;
}
@ -77,6 +79,11 @@ void Evaluator::compile_and_evaluate()
CompileState compile_state(schedule);
for (const DNode &node : schedule) {
if (context_.is_canceled()) {
reset();
return;
}
if (compile_state.should_compile_shader_compile_unit(node)) {
compile_and_evaluate_shader_compile_unit(compile_state);
}
@ -88,6 +95,8 @@ void Evaluator::compile_and_evaluate()
compile_and_evaluate_node(node, compile_state);
}
}
is_compiled_ = true;
}
void Evaluator::compile_and_evaluate_node(DNode node, CompileState &compile_state)

View File

@ -9,6 +9,8 @@
#include "BLI_string_ref.hh"
#include "BLI_vector.hh"
#include "GPU_state.hh"
#include "COM_context.hh"
#include "COM_conversion_operation.hh"
#include "COM_domain.hh"
@ -39,6 +41,8 @@ void Operation::evaluate()
release_inputs();
release_unneeded_results();
GPU_finish();
}
Result &Operation::get_result(StringRef identifier)