[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