diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-08-03 17:04:33 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-08-03 17:04:33 +0300 |
commit | 4a0f3bece31be4997dd19c8ee8faa5ae6a1914e3 (patch) | |
tree | 01c7c840a338a760babd76a5ffce02a274a5ae0d /source/blender | |
parent | 7cfb05dcb0790cc4aa209ecb63649aa756cb730f (diff) |
OpenSubdiv: Make new geometry relations ensures dependent data exists on CPU
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/depsgraph.c | 9 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph.cc | 5 |
2 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index b7ad43869b7..62491f1ff6e 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -1141,7 +1141,14 @@ void dag_add_relation(DagForest *forest, DagNode *fob1, DagNode *fob2, short rel /* TODO(sergey): Find a better place for this. */ #ifdef WITH_OPENSUBDIV if ((rel & DAG_RL_DATA_DATA) != 0) { - fob1->eval_flags |= DAG_EVAL_NEED_CPU; + if (fob1->type == ID_OB) { + if ((fob1->eval_flags & DAG_EVAL_NEED_CPU) == 0) { + Object *object = fob1->ob; + /* Make sure object has all the data on CPU. */ + object->recalc |= OB_RECALC_DATA; + fob1->eval_flags |= DAG_EVAL_NEED_CPU; + } + } } #endif diff --git a/source/blender/depsgraph/intern/depsgraph.cc b/source/blender/depsgraph/intern/depsgraph.cc index 94c01f362be..12b3a36b33e 100644 --- a/source/blender/depsgraph/intern/depsgraph.cc +++ b/source/blender/depsgraph/intern/depsgraph.cc @@ -357,7 +357,10 @@ DepsRelation *Depsgraph::add_new_relation(OperationDepsNode *from, #ifdef WITH_OPENSUBDIV if (type == DEPSREL_TYPE_GEOMETRY_EVAL) { IDDepsNode *id_to = to->owner->owner; - id_to->eval_flags |= DAG_EVAL_NEED_CPU; + if ((id_to->eval_flags & DAG_EVAL_NEED_CPU) == 0) { + id_to->tag_update(this); + id_to->eval_flags |= DAG_EVAL_NEED_CPU; + } } #endif return rel; |