Merge branch 'blender-v2.81-release'
[blender.git] / source / blender / depsgraph / DEG_depsgraph_debug.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2014 Blender Foundation.
17  * All rights reserved.
18  */
19
20 /** \file
21  * \ingroup depsgraph
22  *
23  * Public API for Querying and Filtering Depsgraph
24  */
25
26 #ifndef __DEG_DEPSGRAPH_DEBUG_H__
27 #define __DEG_DEPSGRAPH_DEBUG_H__
28
29 #include <stdio.h>
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 struct Depsgraph;
36 struct Scene;
37 struct ViewLayer;
38
39 /* ------------------------------------------------ */
40
41 /* NOTE: Those flags are same bitmask as G.debug_flags */
42
43 void DEG_debug_flags_set(struct Depsgraph *depsgraph, int flags);
44 int DEG_debug_flags_get(const struct Depsgraph *depsgraph);
45
46 void DEG_debug_name_set(struct Depsgraph *depsgraph, const char *name);
47 const char *DEG_debug_name_get(struct Depsgraph *depsgraph);
48
49 /* ------------------------------------------------ */
50
51 void DEG_stats_simple(const struct Depsgraph *graph,
52                       size_t *r_outer,
53                       size_t *r_operations,
54                       size_t *r_relations);
55
56 /* ************************************************ */
57 /* Diagram-Based Graph Debugging */
58
59 void DEG_debug_relations_graphviz(const struct Depsgraph *graph, FILE *stream, const char *label);
60
61 void DEG_debug_stats_gnuplot(const struct Depsgraph *graph,
62                              FILE *stream,
63                              const char *label,
64                              const char *output_filename);
65
66 /* ************************************************ */
67
68 /* Compare two dependency graphs. */
69 bool DEG_debug_compare(const struct Depsgraph *graph1, const struct Depsgraph *graph2);
70
71 /* Check that dependencies in the graph are really up to date. */
72 bool DEG_debug_graph_relations_validate(struct Depsgraph *graph,
73                                         struct Main *bmain,
74                                         struct Scene *scene,
75                                         struct ViewLayer *view_layer);
76
77 /* Perform consistency check on the graph. */
78 bool DEG_debug_consistency_check(struct Depsgraph *graph);
79
80 #ifdef __cplusplus
81 } /* extern "C" */
82 #endif
83
84 #endif /* __DEG_DEPSGRAPH_DEBUG_H__ */