Commit: 5ce94f5f2564f1391d3e3bcd5b6a71d6cb695061
Author: Sergey Sharybin
Date:   Thu May 26 09:46:21 2016 +0200
Branches: depsgraph_cleanup
https://developer.blender.org/rB5ce94f5f2564f1391d3e3bcd5b6a71d6cb695061

Depsgraph: Move graphviz debugger to own file

We might want to add more debugging methods, so makes sense to have
dedicated folder for all of them.

===================================================================

M       source/blender/depsgraph/CMakeLists.txt
M       source/blender/depsgraph/DEG_depsgraph_build.h
M       source/blender/depsgraph/DEG_depsgraph_debug.h
M       source/blender/depsgraph/DEG_depsgraph_query.h
A       source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc
M       source/blender/depsgraph/intern/depsgraph_debug.cc

===================================================================

diff --git a/source/blender/depsgraph/CMakeLists.txt 
b/source/blender/depsgraph/CMakeLists.txt
index b698437..c220604 100644
--- a/source/blender/depsgraph/CMakeLists.txt
+++ b/source/blender/depsgraph/CMakeLists.txt
@@ -45,6 +45,7 @@ set(SRC
        intern/builder/deg_builder.cc
        intern/builder/deg_builder_nodes.cc
        intern/builder/deg_builder_relations.cc
+       intern/debug/deg_debug_graphviz.cc
        intern/eval/deg_eval.cc
        intern/eval/deg_eval_debug.cc
        intern/eval/deg_eval_flush.cc
diff --git a/source/blender/depsgraph/DEG_depsgraph_build.h 
b/source/blender/depsgraph/DEG_depsgraph_build.h
index f680c47..49b648c 100644
--- a/source/blender/depsgraph/DEG_depsgraph_build.h
+++ b/source/blender/depsgraph/DEG_depsgraph_build.h
@@ -43,9 +43,6 @@ struct Depsgraph;
 struct Main;
 struct Scene;
 
-struct PointerRNA;
-struct PropertyRNA;
-
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/source/blender/depsgraph/DEG_depsgraph_debug.h 
b/source/blender/depsgraph/DEG_depsgraph_debug.h
index 374fad6..0d19b8e 100644
--- a/source/blender/depsgraph/DEG_depsgraph_debug.h
+++ b/source/blender/depsgraph/DEG_depsgraph_debug.h
@@ -39,13 +39,10 @@
 extern "C" {
 #endif
 
-struct DepsgraphSettings;
 struct GHash;
 struct ID;
 
 struct Depsgraph;
-struct DepsNode;
-struct DepsRelation;
 
 /* ************************************************ */
 /* Statistics */
diff --git a/source/blender/depsgraph/DEG_depsgraph_query.h 
b/source/blender/depsgraph/DEG_depsgraph_query.h
index 6862586..ccd204a 100644
--- a/source/blender/depsgraph/DEG_depsgraph_query.h
+++ b/source/blender/depsgraph/DEG_depsgraph_query.h
@@ -19,7 +19,7 @@
  * All rights reserved.
  *
  * Original Author: Joshua Leung
- * Contributor(s): None Yet
+ * Contributor(s): Sergey Sharybin
  *
  * ***** END GPL LICENSE BLOCK *****
  */
@@ -33,12 +33,9 @@
 #ifndef __DEG_DEPSGRAPH_QUERY_H__
 #define __DEG_DEPSGRAPH_QUERY_H__
 
-struct ListBase;
 struct ID;
 
 struct Depsgraph;
-struct DepsNode;
-struct DepsRelation;
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/source/blender/depsgraph/intern/depsgraph_debug.cc 
b/source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc
similarity index 75%
copy from source/blender/depsgraph/intern/depsgraph_debug.cc
copy to source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc
index 4739c05..d389b8f 100644
--- a/source/blender/depsgraph/intern/depsgraph_debug.cc
+++ b/source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc
@@ -24,7 +24,7 @@
  * ***** END GPL LICENSE BLOCK *****
  */
 
-/** \file blender/depsgraph/intern/depsgraph_debug.cc
+/** \file blender/depsgraph/intern/debug/deg_debug_graphviz.cc
  *  \ingroup depsgraph
  *
  * Implementation of tools for debugging the depsgraph
@@ -35,15 +35,8 @@ extern "C" {
 
 #include "DEG_depsgraph.h"
 #include "DEG_depsgraph_debug.h"
-#include "DEG_depsgraph_build.h"
 }  /* extern "C" */
 
-#include "intern/nodes/deg_node.h"
-#include "intern/nodes/deg_node_component.h"
-#include "intern/nodes/deg_node_operation.h"
-
-#include "eval/deg_eval_debug.h"
-#include "depsgraph_debug.h"
 #include "depsgraph_intern.h"
 #include "depsgraph_util_foreach.h"
 
@@ -606,208 +599,3 @@ void DEG_debug_graphviz(const Depsgraph *graph, FILE *f, 
const char *label, bool
 }
 
 #undef NL
-
-/* ************************************************ */
-
-DepsgraphStats *DEG_stats(void)
-{
-       return DEG::DepsgraphDebug::stats;
-}
-
-void DEG_stats_verify()
-{
-       DEG::DepsgraphDebug::verify_stats();
-}
-
-DepsgraphStatsID *DEG_stats_id(ID *id)
-{
-       if (!DEG::DepsgraphDebug::stats) {
-               return NULL;
-       }
-       return DEG::DepsgraphDebug::get_id_stats(id, false);
-}
-
-bool DEG_debug_compare(const struct Depsgraph *graph1,
-                       const struct Depsgraph *graph2)
-{
-       BLI_assert(graph1 != NULL);
-       BLI_assert(graph2 != NULL);
-       const DEG::Depsgraph *deg_graph1 = reinterpret_cast<const 
DEG::Depsgraph *>(graph1);
-       const DEG::Depsgraph *deg_graph2 = reinterpret_cast<const 
DEG::Depsgraph *>(graph2);
-       if (deg_graph1->operations.size() != deg_graph2->operations.size()) {
-               return false;
-       }
-       /* TODO(sergey): Currently we only do real stupid check,
-        * which is fast but which isn't 100% reliable.
-        *
-        * Would be cool to make it more robust, but it's good enough
-        * for now. Also, proper graph check is actually NP-complex
-        * problem..
-        */
-       return true;
-}
-
-bool DEG_debug_scene_relations_validate(Main *bmain,
-                                        Scene *scene)
-{
-       Depsgraph *depsgraph = DEG_graph_new();
-       bool valid = true;
-       DEG_graph_build_from_scene(depsgraph, bmain, scene);
-       if (!DEG_debug_compare(depsgraph, scene->depsgraph)) {
-               fprintf(stderr, "ERROR! Depsgraph wasn't tagged for update when 
it should have!\n");
-               BLI_assert(!"This should not happen!");
-               valid = false;
-       }
-       DEG_graph_free(depsgraph);
-       return valid;
-}
-
-bool DEG_debug_consistency_check(Depsgraph *graph)
-{
-       const DEG::Depsgraph *deg_graph = reinterpret_cast<const DEG::Depsgraph 
*>(graph);
-
-       /* Validate links exists in both directions. */
-       foreach (DEG::OperationDepsNode *node, deg_graph->operations) {
-               foreach (DEG::DepsRelation *rel, node->outlinks) {
-                       int counter1 = 0;
-                       foreach (DEG::DepsRelation *tmp_rel, node->outlinks) {
-                               if (tmp_rel == rel) {
-                                       ++counter1;
-                               }
-                       }
-
-                       int counter2 = 0;
-                       foreach (DEG::DepsRelation *tmp_rel, rel->to->inlinks) {
-                               if (tmp_rel == rel) {
-                                       ++counter2;
-                               }
-                       }
-
-                       if (counter1 != counter2) {
-                               printf("Relation exists in outgoing direction 
but not in incoming (%d vs. %d).\n",
-                                      counter1, counter2);
-                               return false;
-                       }
-               }
-       }
-
-       foreach (DEG::OperationDepsNode *node, deg_graph->operations) {
-               foreach (DEG::DepsRelation *rel, node->inlinks) {
-                       int counter1 = 0;
-                       foreach (DEG::DepsRelation *tmp_rel, node->inlinks) {
-                               if (tmp_rel == rel) {
-                                       ++counter1;
-                               }
-                       }
-
-                       int counter2 = 0;
-                       foreach (DEG::DepsRelation *tmp_rel, 
rel->from->outlinks) {
-                               if (tmp_rel == rel) {
-                                       ++counter2;
-                               }
-                       }
-
-                       if (counter1 != counter2) {
-                               printf("Relation exists in incoming direction 
but not in outcoming (%d vs. %d).\n",
-                                      counter1, counter2);
-                       }
-               }
-       }
-
-       /* Validate node valency calculated in both directions. */
-       foreach (DEG::OperationDepsNode *node, deg_graph->operations) {
-               node->num_links_pending = 0;
-               node->done = 0;
-       }
-
-       foreach (DEG::OperationDepsNode *node, deg_graph->operations) {
-               if (node->done) {
-                       printf("Node %s is twice in the operations!\n",
-                              node->identifier().c_str());
-                       return false;
-               }
-               foreach (DEG::DepsRelation *rel, node->outlinks) {
-                       if (rel->to->type == DEG::DEPSNODE_TYPE_OPERATION) {
-                               DEG::OperationDepsNode *to = 
(DEG::OperationDepsNode *)rel->to;
-                               BLI_assert(to->num_links_pending < 
to->inlinks.size());
-                               ++to->num_links_pending;
-                       }
-               }
-               node->done = 1;
-       }
-
-       foreach (DEG::OperationDepsNode *node, deg_graph->operations) {
-               int num_links_pending = 0;
-               foreach (DEG::DepsRelation *rel, node->inlinks) {
-                       if (rel->from->type == DEG::DEPSNODE_TYPE_OPERATION) {
-                               ++num_links_pending;
-                       }
-               }
-               if (node->num_links_pending != num_links_pending) {
-                       printf("Valency mismatch: %s, %u != %d\n",
-                              node->identifier().c_str(),
-                              node->num_links_pending, num_links_pending);
-                       printf("Number of inlinks: %d\n", 
(int)node->inlinks.size());
-                       return false;
-               }
-       }
-       return true;
-}
-
-/* ------------------------------------------------ */
-
-/**
- * Obtain simple statistics about the complexity of the depsgraph
- * \param[out] r_outer       The number of outer nodes in the graph
- * \param[out] r_operations  The number of operation nodes in the graph
- * \param[out] r_relations   The number of relations between (executable) 
nodes in the graph
- */
-void DEG_stats_simple(const Depsgraph *graph, size_t *r_outer,
-                      size_t *r_operations, size_t *r_relations)
-{
-       const DEG::Depsgraph *deg_graph = reinterpret_cast<const DEG::Depsgraph 
*>(graph);
-
-       /* number of operations */
-       if (r_operations) {
-               /* All operations should be in this list, allowing us to count 
the total
-                * number of nodes.
-                */
-               *r_operations = deg_graph->operations.size();
-       }
-
-       /* Count number of outer nodes and/or relations between these. */
-       if (r_outer || r_relations) {
-               size_t tot_outer = 0;
-               size_t tot_rels = 0;
-
-               for (DEG::Depsgraph::IDNodeMap::const_iterator it = 
deg_graph->id_hash.begin();
-                    it != deg_graph->id_hash.end();
-                    ++it)
-               {
-                       DEG::IDDepsNode *id_node = it->second;
-                       tot_outer++;
-                       for (DEG::IDDepsNode::ComponentMap::const_iterator it = 
id_node->components.begin();
-                            it != id_node->components.end();
-                            ++it)
-                       {
-                               DEG::ComponentDepsNode *comp_node = it->second;
-                               tot_outer++;
-                               for 
(DEG::ComponentDepsNode::OperationMap::const_iterator it = 
comp_node->operations.begin();
-                                    it != comp_node->operations.end();
-                                    ++it)
-                               {
-                                       DEG::OperationDepsNode *op_node = 
it->second;
-                                       tot_rels += op_node->inlinks.size();
-                               }
-                       }
-               }
-
-               DEG::TimeSourceDepsNode *time_source = 
deg_graph->find_time_source(NULL);
-               if (time_source != NULL) {
-                       tot_rels += time_source->inlinks.size();
-               }
-
-               if (r_relations) *r_relations = tot_rels;
-               if (r_outer)     *r_outer     = tot_outer;
-       }
-}
diff --git a/source/blender/depsgraph/intern/depsgraph_debug.cc 
b/source/blender/depsgraph/intern/depsgraph_debug.cc
index 4739c05..de78b4e 100644
--- a/source/blender/depsgraph/intern/depsgraph_debug.cc
+++ b/source/blender/depsgraph/intern/depsgraph_debug.cc
@@ -38,575 +38,10 @@ extern "C" {
 #include "DEG_depsgraph_build.h"
 }  /* extern "C" */
 
-#include "intern/nodes/deg_node.h"
-#include "intern/nodes/deg_node_component.h"
-#include "intern/nodes/deg_node_operation.h"
-
 #include "eval/deg_eval_debug.h"
-#include "depsgraph_debug.h"
 #include "depsgraph_intern.h"
 #include "depsgraph_util_foreach.h"
 
-/* ****************** */
-/* Graphviz Debugging */
-
-namespace DEG {
-
-#define NL "\r\n"
-
-/* Only one should be enabled, defines whether graphviz nodes
- * get colored by individual types or classes.
- */
-#define COLOR_SCHEME_NODE_CLASS 1
-//#define COLOR_SCHEME

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to