Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/depsgraph/intern/depsgraph_build.cc
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff)
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/depsgraph/intern/depsgraph_build.cc')
-rw-r--r--source/blender/depsgraph/intern/depsgraph_build.cc341
1 files changed, 159 insertions, 182 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph_build.cc b/source/blender/depsgraph/intern/depsgraph_build.cc
index 3cec2b45ea4..e4c84264960 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.cc
+++ b/source/blender/depsgraph/intern/depsgraph_build.cc
@@ -63,37 +63,47 @@ extern "C" {
/* ****************** */
/* External Build API */
-static DEG::NodeType deg_build_scene_component_type(
- eDepsSceneComponentType component)
+static DEG::NodeType deg_build_scene_component_type(eDepsSceneComponentType component)
{
- switch (component) {
- case DEG_SCENE_COMP_PARAMETERS: return DEG::NodeType::PARAMETERS;
- case DEG_SCENE_COMP_ANIMATION: return DEG::NodeType::ANIMATION;
- case DEG_SCENE_COMP_SEQUENCER: return DEG::NodeType::SEQUENCER;
- }
- return DEG::NodeType::UNDEFINED;
+ switch (component) {
+ case DEG_SCENE_COMP_PARAMETERS:
+ return DEG::NodeType::PARAMETERS;
+ case DEG_SCENE_COMP_ANIMATION:
+ return DEG::NodeType::ANIMATION;
+ case DEG_SCENE_COMP_SEQUENCER:
+ return DEG::NodeType::SEQUENCER;
+ }
+ return DEG::NodeType::UNDEFINED;
}
-static DEG::NodeType deg_build_object_component_type(
- eDepsObjectComponentType component)
+static DEG::NodeType deg_build_object_component_type(eDepsObjectComponentType component)
{
- switch (component) {
- case DEG_OB_COMP_PARAMETERS: return DEG::NodeType::PARAMETERS;
- case DEG_OB_COMP_PROXY: return DEG::NodeType::PROXY;
- case DEG_OB_COMP_ANIMATION: return DEG::NodeType::ANIMATION;
- case DEG_OB_COMP_TRANSFORM: return DEG::NodeType::TRANSFORM;
- case DEG_OB_COMP_GEOMETRY: return DEG::NodeType::GEOMETRY;
- case DEG_OB_COMP_EVAL_POSE: return DEG::NodeType::EVAL_POSE;
- case DEG_OB_COMP_BONE: return DEG::NodeType::BONE;
- case DEG_OB_COMP_SHADING: return DEG::NodeType::SHADING;
- case DEG_OB_COMP_CACHE: return DEG::NodeType::CACHE;
- }
- return DEG::NodeType::UNDEFINED;
+ switch (component) {
+ case DEG_OB_COMP_PARAMETERS:
+ return DEG::NodeType::PARAMETERS;
+ case DEG_OB_COMP_PROXY:
+ return DEG::NodeType::PROXY;
+ case DEG_OB_COMP_ANIMATION:
+ return DEG::NodeType::ANIMATION;
+ case DEG_OB_COMP_TRANSFORM:
+ return DEG::NodeType::TRANSFORM;
+ case DEG_OB_COMP_GEOMETRY:
+ return DEG::NodeType::GEOMETRY;
+ case DEG_OB_COMP_EVAL_POSE:
+ return DEG::NodeType::EVAL_POSE;
+ case DEG_OB_COMP_BONE:
+ return DEG::NodeType::BONE;
+ case DEG_OB_COMP_SHADING:
+ return DEG::NodeType::SHADING;
+ case DEG_OB_COMP_CACHE:
+ return DEG::NodeType::CACHE;
+ }
+ return DEG::NodeType::UNDEFINED;
}
static DEG::DepsNodeHandle *get_node_handle(DepsNodeHandle *node_handle)
{
- return reinterpret_cast<DEG::DepsNodeHandle *>(node_handle);
+ return reinterpret_cast<DEG::DepsNodeHandle *>(node_handle);
}
void DEG_add_scene_relation(DepsNodeHandle *node_handle,
@@ -101,12 +111,10 @@ void DEG_add_scene_relation(DepsNodeHandle *node_handle,
eDepsSceneComponentType component,
const char *description)
{
- DEG::NodeType type = deg_build_scene_component_type(component);
- DEG::ComponentKey comp_key(&scene->id, type);
- DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
- deg_node_handle->builder->add_node_handle_relation(comp_key,
- deg_node_handle,
- description);
+ DEG::NodeType type = deg_build_scene_component_type(component);
+ DEG::ComponentKey comp_key(&scene->id, type);
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ deg_node_handle->builder->add_node_handle_relation(comp_key, deg_node_handle, description);
}
void DEG_add_object_relation(DepsNodeHandle *node_handle,
@@ -114,12 +122,10 @@ void DEG_add_object_relation(DepsNodeHandle *node_handle,
eDepsObjectComponentType component,
const char *description)
{
- DEG::NodeType type = deg_build_object_component_type(component);
- DEG::ComponentKey comp_key(&object->id, type);
- DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
- deg_node_handle->builder->add_node_handle_relation(comp_key,
- deg_node_handle,
- description);
+ DEG::NodeType type = deg_build_object_component_type(component);
+ DEG::ComponentKey comp_key(&object->id, type);
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ deg_node_handle->builder->add_node_handle_relation(comp_key, deg_node_handle, description);
}
void DEG_add_object_cache_relation(DepsNodeHandle *node_handle,
@@ -127,12 +133,10 @@ void DEG_add_object_cache_relation(DepsNodeHandle *node_handle,
eDepsObjectComponentType component,
const char *description)
{
- DEG::NodeType type = deg_build_object_component_type(component);
- DEG::ComponentKey comp_key(&cache_file->id, type);
- DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
- deg_node_handle->builder->add_node_handle_relation(comp_key,
- deg_node_handle,
- description);
+ DEG::NodeType type = deg_build_object_component_type(component);
+ DEG::ComponentKey comp_key(&cache_file->id, type);
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ deg_node_handle->builder->add_node_handle_relation(comp_key, deg_node_handle, description);
}
void DEG_add_bone_relation(DepsNodeHandle *node_handle,
@@ -141,12 +145,10 @@ void DEG_add_bone_relation(DepsNodeHandle *node_handle,
eDepsObjectComponentType component,
const char *description)
{
- DEG::NodeType type = deg_build_object_component_type(component);
- DEG::ComponentKey comp_key(&object->id, type, bone_name);
- DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
- deg_node_handle->builder->add_node_handle_relation(comp_key,
- deg_node_handle,
- description);
+ DEG::NodeType type = deg_build_object_component_type(component);
+ DEG::ComponentKey comp_key(&object->id, type, bone_name);
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ deg_node_handle->builder->add_node_handle_relation(comp_key, deg_node_handle, description);
}
void DEG_add_object_pointcache_relation(struct DepsNodeHandle *node_handle,
@@ -154,82 +156,66 @@ void DEG_add_object_pointcache_relation(struct DepsNodeHandle *node_handle,
eDepsObjectComponentType component,
const char *description)
{
- DEG::NodeType type = deg_build_object_component_type(component);
- DEG::ComponentKey comp_key(&object->id, type);
- DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
- DEG::DepsgraphRelationBuilder *relation_builder = deg_node_handle->builder;
- /* Add relation from source to the node handle. */
- relation_builder->add_node_handle_relation(
- comp_key, deg_node_handle, description);
- /* Node deduct point cache component and connect source to it. */
- ID *id = DEG_get_id_from_handle(node_handle);
- DEG::ComponentKey point_cache_key(id, DEG::NodeType::POINT_CACHE);
- DEG::Relation *rel = relation_builder->add_relation(
- comp_key, point_cache_key, "Point Cache");
- if (rel != NULL) {
- rel->flag |= DEG::RELATION_FLAG_FLUSH_USER_EDIT_ONLY;
- }
- else {
- fprintf(stderr,
- "Error in point cache relation from %s to ^%s.\n",
- object->id.name,
- id->name);
- }
+ DEG::NodeType type = deg_build_object_component_type(component);
+ DEG::ComponentKey comp_key(&object->id, type);
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ DEG::DepsgraphRelationBuilder *relation_builder = deg_node_handle->builder;
+ /* Add relation from source to the node handle. */
+ relation_builder->add_node_handle_relation(comp_key, deg_node_handle, description);
+ /* Node deduct point cache component and connect source to it. */
+ ID *id = DEG_get_id_from_handle(node_handle);
+ DEG::ComponentKey point_cache_key(id, DEG::NodeType::POINT_CACHE);
+ DEG::Relation *rel = relation_builder->add_relation(comp_key, point_cache_key, "Point Cache");
+ if (rel != NULL) {
+ rel->flag |= DEG::RELATION_FLAG_FLUSH_USER_EDIT_ONLY;
+ }
+ else {
+ fprintf(stderr, "Error in point cache relation from %s to ^%s.\n", object->id.name, id->name);
+ }
}
void DEG_add_generic_id_relation(struct DepsNodeHandle *node_handle,
struct ID *id,
const char *description)
{
- DEG::OperationKey operation_key(
- id,
- DEG::NodeType::GENERIC_DATABLOCK,
- DEG::OperationCode::GENERIC_DATABLOCK_UPDATE);
- DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
- deg_node_handle->builder->add_node_handle_relation(operation_key,
- deg_node_handle,
- description);
+ DEG::OperationKey operation_key(
+ id, DEG::NodeType::GENERIC_DATABLOCK, DEG::OperationCode::GENERIC_DATABLOCK_UPDATE);
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ deg_node_handle->builder->add_node_handle_relation(operation_key, deg_node_handle, description);
}
-void DEG_add_modifier_to_transform_relation(
- struct DepsNodeHandle *node_handle,
- const char *description)
+void DEG_add_modifier_to_transform_relation(struct DepsNodeHandle *node_handle,
+ const char *description)
{
- DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
- deg_node_handle->builder->add_modifier_to_transform_relation(
- deg_node_handle,
- description);
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ deg_node_handle->builder->add_modifier_to_transform_relation(deg_node_handle, description);
}
-void DEG_add_special_eval_flag(struct DepsNodeHandle *node_handle,
- ID *id,
- uint32_t flag)
+void DEG_add_special_eval_flag(struct DepsNodeHandle *node_handle, ID *id, uint32_t flag)
{
- DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
- deg_node_handle->builder->add_special_eval_flag(id, flag);
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ deg_node_handle->builder->add_special_eval_flag(id, flag);
}
void DEG_add_customdata_mask(struct DepsNodeHandle *node_handle,
struct Object *object,
const CustomData_MeshMasks *masks)
{
- DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
- deg_node_handle->builder->add_customdata_mask(
- object,
- DEG::DEGCustomDataMeshMasks(masks));
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ deg_node_handle->builder->add_customdata_mask(object, DEG::DEGCustomDataMeshMasks(masks));
}
struct ID *DEG_get_id_from_handle(struct DepsNodeHandle *node_handle)
{
- DEG::DepsNodeHandle *deg_handle = get_node_handle(node_handle);
- return deg_handle->node->owner->owner->id_orig;
+ DEG::DepsNodeHandle *deg_handle = get_node_handle(node_handle);
+ return deg_handle->node->owner->owner->id_orig;
}
struct Depsgraph *DEG_get_graph_from_handle(struct DepsNodeHandle *node_handle)
{
- DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
- DEG::DepsgraphRelationBuilder *relation_builder = deg_node_handle->builder;
- return reinterpret_cast<Depsgraph *>(relation_builder->getGraph());
+ DEG::DepsNodeHandle *deg_node_handle = get_node_handle(node_handle);
+ DEG::DepsgraphRelationBuilder *relation_builder = deg_node_handle->builder;
+ return reinterpret_cast<Depsgraph *>(relation_builder->getGraph());
}
/* ******************** */
@@ -239,106 +225,97 @@ struct Depsgraph *DEG_get_graph_from_handle(struct DepsNodeHandle *node_handle)
* graph container.
*/
void DEG_graph_build_from_view_layer(Depsgraph *graph,
- Main *bmain,
- Scene *scene,
- ViewLayer *view_layer)
+ Main *bmain,
+ Scene *scene,
+ ViewLayer *view_layer)
{
- double start_time = 0.0;
- if (G.debug & (G_DEBUG_DEPSGRAPH_BUILD | G_DEBUG_DEPSGRAPH_TIME)) {
- start_time = PIL_check_seconds_timer();
- }
- DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(graph);
- /* Perform sanity checks. */
- BLI_assert(BLI_findindex(&scene->view_layers, view_layer) != -1);
- BLI_assert(deg_graph->scene == scene);
- BLI_assert(deg_graph->view_layer == view_layer);
- /* Generate all the nodes in the graph first */
- DEG::DepsgraphNodeBuilder node_builder(bmain, deg_graph);
- node_builder.begin_build();
- node_builder.build_view_layer(scene,
- view_layer,
- DEG::DEG_ID_LINKED_DIRECTLY);
- node_builder.end_build();
- /* Hook up relationships between operations - to determine evaluation
- * order. */
- DEG::DepsgraphRelationBuilder relation_builder(bmain, deg_graph);
- relation_builder.begin_build();
- relation_builder.build_view_layer(scene, view_layer);
- relation_builder.build_copy_on_write_relations();
- /* Detect and solve cycles. */
- DEG::deg_graph_detect_cycles(deg_graph);
- /* Simplify the graph by removing redundant relations (to optimize
- * traversal later). */
- /* TODO: it would be useful to have an option to disable this in cases where
- * it is causing trouble. */
- if (G.debug_value == 799) {
- DEG::deg_graph_transitive_reduction(deg_graph);
- }
- /* Store pointers to commonly used valuated datablocks. */
- deg_graph->scene_cow = (Scene *)deg_graph->get_cow_id(&deg_graph->scene->id);
- /* Flush visibility layer and re-schedule nodes for update. */
- DEG::deg_graph_build_finalize(bmain, deg_graph);
- DEG_graph_on_visible_update(bmain, graph);
+ double start_time = 0.0;
+ if (G.debug & (G_DEBUG_DEPSGRAPH_BUILD | G_DEBUG_DEPSGRAPH_TIME)) {
+ start_time = PIL_check_seconds_timer();
+ }
+ DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(graph);
+ /* Perform sanity checks. */
+ BLI_assert(BLI_findindex(&scene->view_layers, view_layer) != -1);
+ BLI_assert(deg_graph->scene == scene);
+ BLI_assert(deg_graph->view_layer == view_layer);
+ /* Generate all the nodes in the graph first */
+ DEG::DepsgraphNodeBuilder node_builder(bmain, deg_graph);
+ node_builder.begin_build();
+ node_builder.build_view_layer(scene, view_layer, DEG::DEG_ID_LINKED_DIRECTLY);
+ node_builder.end_build();
+ /* Hook up relationships between operations - to determine evaluation
+ * order. */
+ DEG::DepsgraphRelationBuilder relation_builder(bmain, deg_graph);
+ relation_builder.begin_build();
+ relation_builder.build_view_layer(scene, view_layer);
+ relation_builder.build_copy_on_write_relations();
+ /* Detect and solve cycles. */
+ DEG::deg_graph_detect_cycles(deg_graph);
+ /* Simplify the graph by removing redundant relations (to optimize
+ * traversal later). */
+ /* TODO: it would be useful to have an option to disable this in cases where
+ * it is causing trouble. */
+ if (G.debug_value == 799) {
+ DEG::deg_graph_transitive_reduction(deg_graph);
+ }
+ /* Store pointers to commonly used valuated datablocks. */
+ deg_graph->scene_cow = (Scene *)deg_graph->get_cow_id(&deg_graph->scene->id);
+ /* Flush visibility layer and re-schedule nodes for update. */
+ DEG::deg_graph_build_finalize(bmain, deg_graph);
+ DEG_graph_on_visible_update(bmain, graph);
#if 0
- if (!DEG_debug_consistency_check(deg_graph)) {
- printf("Consistency validation failed, ABORTING!\n");
- abort();
- }
+ if (!DEG_debug_consistency_check(deg_graph)) {
+ printf("Consistency validation failed, ABORTING!\n");
+ abort();
+ }
#endif
- /* Relations are up to date. */
- deg_graph->need_update = false;
- /* Finish statistics. */
- if (G.debug & (G_DEBUG_DEPSGRAPH_BUILD | G_DEBUG_DEPSGRAPH_TIME)) {
- printf("Depsgraph built in %f seconds.\n",
- PIL_check_seconds_timer() - start_time);
- }
+ /* Relations are up to date. */
+ deg_graph->need_update = false;
+ /* Finish statistics. */
+ if (G.debug & (G_DEBUG_DEPSGRAPH_BUILD | G_DEBUG_DEPSGRAPH_TIME)) {
+ printf("Depsgraph built in %f seconds.\n", PIL_check_seconds_timer() - start_time);
+ }
}
/* Tag graph relations for update. */
void DEG_graph_tag_relations_update(Depsgraph *graph)
{
- DEG_DEBUG_PRINTF(graph, TAG, "%s: Tagging relations for update.\n", __func__);
- DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(graph);
- deg_graph->need_update = true;
- /* NOTE: When relations are updated, it's quite possible that
- * we've got new bases in the scene. This means, we need to
- * re-create flat array of bases in view layer.
- *
- * TODO(sergey): Try to make it so we don't flush updates
- * to the whole depsgraph. */
- DEG::IDNode *id_node = deg_graph->find_id_node(&deg_graph->scene->id);
- if (id_node != NULL) {
- id_node->tag_update(deg_graph, DEG::DEG_UPDATE_SOURCE_RELATIONS);
- }
+ DEG_DEBUG_PRINTF(graph, TAG, "%s: Tagging relations for update.\n", __func__);
+ DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(graph);
+ deg_graph->need_update = true;
+ /* NOTE: When relations are updated, it's quite possible that
+ * we've got new bases in the scene. This means, we need to
+ * re-create flat array of bases in view layer.
+ *
+ * TODO(sergey): Try to make it so we don't flush updates
+ * to the whole depsgraph. */
+ DEG::IDNode *id_node = deg_graph->find_id_node(&deg_graph->scene->id);
+ if (id_node != NULL) {
+ id_node->tag_update(deg_graph, DEG::DEG_UPDATE_SOURCE_RELATIONS);
+ }
}
/* Create or update relations in the specified graph. */
-void DEG_graph_relations_update(Depsgraph *graph,
- Main *bmain,
- Scene *scene,
- ViewLayer *view_layer)
+void DEG_graph_relations_update(Depsgraph *graph, Main *bmain, Scene *scene, ViewLayer *view_layer)
{
- DEG::Depsgraph *deg_graph = (DEG::Depsgraph *)graph;
- if (!deg_graph->need_update) {
- /* Graph is up to date, nothing to do. */
- return;
- }
- DEG_graph_build_from_view_layer(graph, bmain, scene, view_layer);
+ DEG::Depsgraph *deg_graph = (DEG::Depsgraph *)graph;
+ if (!deg_graph->need_update) {
+ /* Graph is up to date, nothing to do. */
+ return;
+ }
+ DEG_graph_build_from_view_layer(graph, bmain, scene, view_layer);
}
/* Tag all relations for update. */
void DEG_relations_tag_update(Main *bmain)
{
- DEG_GLOBAL_DEBUG_PRINTF(TAG, "%s: Tagging relations for update.\n", __func__);
- LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
- LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
- Depsgraph *depsgraph =
- (Depsgraph *)BKE_scene_get_depsgraph(scene,
- view_layer,
- false);
- if (depsgraph != NULL) {
- DEG_graph_tag_relations_update(depsgraph);
- }
- }
- }
+ DEG_GLOBAL_DEBUG_PRINTF(TAG, "%s: Tagging relations for update.\n", __func__);
+ LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
+ LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
+ Depsgraph *depsgraph = (Depsgraph *)BKE_scene_get_depsgraph(scene, view_layer, false);
+ if (depsgraph != NULL) {
+ DEG_graph_tag_relations_update(depsgraph);
+ }
+ }
+ }
}