83 fprintf(stderr,
"ERROR! Depsgraph wasn't tagged for update when it should have!\n");
105 if (tmp_rel == rel) {
109 if (counter1 != counter2) {
111 "Relation exists in outgoing direction but not in "
112 "incoming (%d vs. %d).\n",
124 if (tmp_rel == rel) {
130 if (tmp_rel == rel) {
134 if (counter1 != counter2) {
135 printf(
"Relation exists in incoming direction but not in outcoming (%d vs. %d).\n",
144 node->num_links_pending = 0;
145 node->custom_flags = 0;
149 if (node->custom_flags) {
150 printf(
"Node %s is twice in the operations!\n", node->identifier().c_str());
154 if (rel->to->type == deg::NodeType::OPERATION) {
156 BLI_assert(to->num_links_pending < to->inlinks.size());
157 ++to->num_links_pending;
160 node->custom_flags = 1;
164 int num_links_pending = 0;
166 if (rel->from->type == deg::NodeType::OPERATION) {
170 if (node->num_links_pending != num_links_pending) {
171 printf(
"Valency mismatch: %s, %u != %d\n",
172 node->identifier().c_str(),
173 node->num_links_pending,
175 printf(
"Number of inlinks: %d\n",
int(node->inlinks.size()));
186 size_t *r_operations,
199 if (r_outer || r_relations) {
200 size_t tot_outer = 0;
208 tot_rels += op_node->inlinks.size();
214 if (time_source !=
nullptr) {
219 *r_relations = tot_rels;
222 *r_outer = tot_outer;
230 if (name[0] ==
'\0') {
233 return "[" + deg::string(name) +
"]: ";
242 const char *function_name,
243 const char *object_name,
244 const void *object_address)
250 "%s%s on %s %s(%p)%s\n",
261 const char *function_name,
262 const char *object_name,
263 const void *object_address,
264 const char *subdata_comment,
265 const char *subdata_name,
266 const void *subdata_address)
272 "%s%s on %s %s(%p)%s %s %s %s(%p)%s\n",
288 const char *function_name,
289 const char *object_name,
290 const void *object_address,
291 const char *subdata_comment,
292 const char *subdata_name,
293 const void *subdata_address,
294 const int subdata_index)
300 "%s%s on %s %s(%p)%s %s %s[%d] %s(%p)%s\n",
317 const char *function_name,
318 const char *object_name,
319 const void *object_address,
320 const char *parent_comment,
321 const char *parent_name,
322 const void *parent_address)
328 "%s%s on %s %s(%p) [%s] %s %s %s(%p)%s\n",
344 const char *function_name,
345 const char *object_name,
346 const void *object_address,
353 "%s%s on %s %s(%p)%s at time %f\n",
#define BLI_assert_msg(a, msg)
Depsgraph * DEG_graph_new(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
void DEG_graph_free(Depsgraph *graph)
void DEG_graph_build_from_view_layer(Depsgraph *graph)
eEvaluationMode DEG_get_mode(const Depsgraph *graph)
Object is a sort of wrapper for general info.
const Depsgraph * depsgraph
void DEG_debug_print_eval_parent_typed(Depsgraph *depsgraph, const char *function_name, const char *object_name, const void *object_address, const char *parent_comment, const char *parent_name, const void *parent_address)
void DEG_debug_flags_set(Depsgraph *depsgraph, int flags)
void DEG_debug_print_eval_time(Depsgraph *depsgraph, const char *function_name, const char *object_name, const void *object_address, float time)
void DEG_debug_print_eval_subdata(Depsgraph *depsgraph, const char *function_name, const char *object_name, const void *object_address, const char *subdata_comment, const char *subdata_name, const void *subdata_address)
int DEG_debug_flags_get(const Depsgraph *depsgraph)
bool DEG_debug_compare(const Depsgraph *graph1, const Depsgraph *graph2)
bool DEG_debug_consistency_check(Depsgraph *graph)
void DEG_debug_print_begin(Depsgraph *depsgraph)
bool DEG_debug_graph_relations_validate(Depsgraph *graph, Main *bmain, Scene *scene, ViewLayer *view_layer)
void DEG_debug_print_eval(Depsgraph *depsgraph, const char *function_name, const char *object_name, const void *object_address)
void DEG_debug_print_eval_subdata_index(Depsgraph *depsgraph, const char *function_name, const char *object_name, const void *object_address, const char *subdata_comment, const char *subdata_name, const void *subdata_address, const int subdata_index)
const char * DEG_debug_name_get(Depsgraph *depsgraph)
void DEG_debug_name_set(Depsgraph *depsgraph, const char *name)
void DEG_stats_simple(const Depsgraph *graph, size_t *r_outer, size_t *r_operations, size_t *r_relations)
static deg::string depsgraph_name_for_logging(Depsgraph *depsgraph)
string color_for_pointer(const void *pointer)
TimeSourceNode * find_time_source() const
OperationNodes operations