[Bf-blender-cvs] [071315e21bf] blender2.8: DEG: Add per object update flag for Depsgraph.

Clément Foucault noreply at git.blender.org
Thu Jun 1 23:55:15 CEST 2017


Commit: 071315e21bfec253639237e1244f0cc9b3f31812
Author: Clément Foucault
Date:   Thu Jun 1 16:44:24 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB071315e21bfec253639237e1244f0cc9b3f31812

DEG: Add per object update flag for Depsgraph.

This is in order to communicate what portion of this object has changed.
For now it's just a bool, but it will be extended later.

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

M	source/blender/blenkernel/intern/object.c
M	source/blender/depsgraph/intern/eval/deg_eval_flush.cc
M	source/blender/draw/intern/draw_manager.c
M	source/blender/makesdna/DNA_object_types.h

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

diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index c24a6d3c791..9a2251b0f93 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -464,6 +464,8 @@ void BKE_object_free(Object *ob)
 	}
 	BLI_freelistN(&ob->drawdata);
 
+	ob->deg_update_flag = 0;
+
 	BKE_sculptsession_free(ob);
 
 	BLI_freelistN(&ob->pc_ids);
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
index 34abbf46ed7..46b70c40b78 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
@@ -191,6 +191,9 @@ void deg_graph_flush_updates(Main *bmain, Depsgraph *graph)
 							object->recalc |= OB_RECALC_DATA;
 							break;
 					}
+
+					/* TODO : replace with more granular flags */
+					object->deg_update_flag |= DEG_RUNTIME_DATA_UPDATE;
 				}
 			}
 
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index cf882717f8a..0c74b68402c 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -2869,6 +2869,8 @@ void DRW_draw_render_loop(
 		DEG_OBJECT_ITER(graph, ob);
 		{
 			DRW_engines_cache_populate(ob);
+			/* XXX find a better place for this. maybe Depsgraph? */
+			ob->deg_update_flag = 0;
 		}
 		DEG_OBJECT_ITER_END
 
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index 72a21437b7d..397781110b4 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -324,8 +324,9 @@ typedef struct Object {
 	struct IDProperty *base_collection_properties; /* used by depsgraph, flushed from base */
 
 	ListBase drawdata;		/* runtime, ObjectEngineData */
+	int deg_update_flag; /* what has been updated in this object */
 	int base_selection_color; /* flushed by depsgraph only */
-	int pad3[3];
+	int pad3[2];
 } Object;
 
 /* Warning, this is not used anymore because hooks are now modifiers */
@@ -626,6 +627,11 @@ enum {
 	OB_DEPS_EXTRA_DATA_RECALC   = 1 << 1,
 };
 
+/* ob->deg_update_flag */
+enum {
+	DEG_RUNTIME_DATA_UPDATE     = 1 << 0,
+};
+
 /* ob->scavisflag */
 enum {
 	OB_VIS_SENS     = 1 << 0,




More information about the Bf-blender-cvs mailing list