Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c3
-rw-r--r--source/blender/depsgraph/DEG_depsgraph.h3
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder.cc5
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.cc32
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.h9
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc20
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc8
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc41
-rw-r--r--source/blender/depsgraph/intern/depsgraph.cc14
-rw-r--r--source/blender/depsgraph/intern/depsgraph_build.cc4
-rw-r--r--source/blender/depsgraph/intern/depsgraph_tag.cc2
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval.cc3
-rw-r--r--source/blender/depsgraph/intern/nodes/deg_node_id.cc8
-rw-r--r--source/creator/creator_args.c17
14 files changed, 43 insertions, 126 deletions
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 3c9e0efa12e..8de4b7f741d 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -2934,9 +2934,6 @@ static bool calc_modifiers_skip_orco(Depsgraph *depsgraph,
static void mesh_finalize_eval(Object *object)
{
- if (!DEG_depsgraph_use_copy_on_write()) {
- return;
- }
Mesh *mesh = (Mesh *)object->data;
Mesh *mesh_eval = object->runtime.mesh_eval;
/* Special Tweaks for cases when evaluated mesh came from
diff --git a/source/blender/depsgraph/DEG_depsgraph.h b/source/blender/depsgraph/DEG_depsgraph.h
index d79ee9aa86b..fbd267924a9 100644
--- a/source/blender/depsgraph/DEG_depsgraph.h
+++ b/source/blender/depsgraph/DEG_depsgraph.h
@@ -91,9 +91,6 @@ enum {
extern "C" {
#endif
-bool DEG_depsgraph_use_copy_on_write(void);
-void DEG_depsgraph_disable_copy_on_write(void);
-
/* ************************************************ */
/* Depsgraph API */
diff --git a/source/blender/depsgraph/intern/builder/deg_builder.cc b/source/blender/depsgraph/intern/builder/deg_builder.cc
index 2fcad233044..e2fc1efd455 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder.cc
@@ -46,7 +46,6 @@ namespace DEG {
void deg_graph_build_finalize(Main *bmain, Depsgraph *graph)
{
- const bool use_copy_on_write = DEG_depsgraph_use_copy_on_write();
/* Re-tag IDs for update if it was tagged before the relations
* update tag.
*/
@@ -59,9 +58,7 @@ void deg_graph_build_finalize(Main *bmain, Depsgraph *graph)
/* TODO(sergey): This is not ideal at all, since this forces
* re-evaluaiton of the whole tree.
*/
- if (use_copy_on_write) {
- DEG_id_tag_update_ex(bmain, id_node->id_orig, DEG_TAG_COPY_ON_WRITE);
- }
+ DEG_id_tag_update_ex(bmain, id_node->id_orig, DEG_TAG_COPY_ON_WRITE);
}
}
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index fbf94293236..677dcfbfb8d 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -150,9 +150,6 @@ DepsgraphNodeBuilder::~DepsgraphNodeBuilder()
IDDepsNode *DepsgraphNodeBuilder::add_id_node(ID *id)
{
- if (!DEG_depsgraph_use_copy_on_write()) {
- return graph_->add_id_node(id);
- }
IDDepsNode *id_node = NULL;
ID *id_cow = (ID *)BLI_ghash_lookup(cow_id_hash_, id);
if (id_cow != NULL) {
@@ -324,22 +321,21 @@ ID *DepsgraphNodeBuilder::ensure_cow_id(ID *id_orig)
/* **** Build functions for entity nodes **** */
-void DepsgraphNodeBuilder::begin_build() {
- if (DEG_depsgraph_use_copy_on_write()) {
- /* Store existing copy-on-write versions of datablock, so we can re-use
- * them for new ID nodes.
- */
- cow_id_hash_ = BLI_ghash_ptr_new("Depsgraph id hash");
- foreach (IDDepsNode *id_node, graph_->id_nodes) {
- if (deg_copy_on_write_is_expanded(id_node->id_cow)) {
- if (id_node->id_orig == id_node->id_cow) {
- continue;
- }
- BLI_ghash_insert(cow_id_hash_,
- id_node->id_orig,
- id_node->id_cow);
- id_node->id_cow = NULL;
+void DepsgraphNodeBuilder::begin_build()
+{
+ /* Store existing copy-on-write versions of datablock, so we can re-use
+ * them for new ID nodes.
+ */
+ cow_id_hash_ = BLI_ghash_ptr_new("Depsgraph id hash");
+ foreach (IDDepsNode *id_node, graph_->id_nodes) {
+ if (deg_copy_on_write_is_expanded(id_node->id_cow)) {
+ if (id_node->id_orig == id_node->id_cow) {
+ continue;
}
+ BLI_ghash_insert(cow_id_hash_,
+ id_node->id_orig,
+ id_node->id_cow);
+ id_node->id_cow = NULL;
}
}
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
index 8b9d2d1a010..b7c5a33f2c0 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
@@ -33,7 +33,7 @@
#include "intern/builder/deg_builder_map.h"
#include "intern/depsgraph_types.h"
-#include "DEG_depsgraph.h" /* used for DEG_depsgraph_use_copy_on_write() */
+#include "DEG_depsgraph.h"
struct Base;
struct CacheFile;
@@ -92,12 +92,7 @@ struct DepsgraphNodeBuilder {
/* For a given COW datablock get corresponding original one. */
template<typename T>
T *get_orig_datablock(const T *cow) const {
- if (DEG_depsgraph_use_copy_on_write()) {
- return (T *)cow->id.orig_id;
- }
- else {
- return (T *)cow;
- }
+ return (T *)cow->id.orig_id;
}
void begin_build();
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
index c48381481f5..d3c4ce01674 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
@@ -145,16 +145,8 @@ void DepsgraphNodeBuilder::build_splineik_pose(Object *object,
void DepsgraphNodeBuilder::build_rig(Object *object)
{
bArmature *armature = (bArmature *)object->data;
- Scene *scene_cow;
- Object *object_cow;
- if (DEG_depsgraph_use_copy_on_write()) {
- scene_cow = get_cow_datablock(scene_);
- object_cow = get_cow_datablock(object);
- }
- else {
- scene_cow = scene_;
- object_cow = object;
- }
+ Scene *scene_cow = get_cow_datablock(scene_);
+ Object *object_cow = get_cow_datablock(object);
OperationDepsNode *op_node;
/* Animation and/or drivers linking posebones to base-armature used to
@@ -324,13 +316,7 @@ void DepsgraphNodeBuilder::build_proxy_rig(Object *object)
{
bArmature *arm = (bArmature *)object->data;
OperationDepsNode *op_node;
- Object *object_cow;
- if (DEG_depsgraph_use_copy_on_write()) {
- object_cow = get_cow_datablock(object);
- }
- else {
- object_cow = object;
- }
+ Object *object_cow = get_cow_datablock(object);
/* Sanity check. */
BLI_assert(object->pose != NULL);
/* Animation. */
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
index fd4b975e53f..3fc97ee3fcf 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc
@@ -96,13 +96,7 @@ void DepsgraphNodeBuilder::build_view_layer(
scene_ = scene;
view_layer_ = view_layer;
/* Get pointer to a CoW version of scene ID. */
- Scene *scene_cow;
- if (DEG_depsgraph_use_copy_on_write()) {
- scene_cow = get_cow_datablock(scene);
- }
- else {
- scene_cow = scene;
- }
+ Scene *scene_cow = get_cow_datablock(scene);
/* Scene objects. */
int select_color = 1;
/* NOTE: Base is used for function bindings as-is, so need to pass CoW base,
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index c4be03eee8c..a422de5b9a4 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -1028,14 +1028,12 @@ void DepsgraphRelationBuilder::build_animdata_curves_targets(
/* It is possible that animation is writing to a nested ID datablock,
* need to make sure animation is evaluated after target ID is copied.
*/
- if (DEG_depsgraph_use_copy_on_write()) {
- const IDDepsNode *id_node_from = operation_from->owner->owner;
- const IDDepsNode *id_node_to = operation_to->owner->owner;
- if (id_node_from != id_node_to) {
- ComponentKey cow_key(id_node_to->id_orig,
- DEG_NODE_TYPE_COPY_ON_WRITE);
- add_relation(cow_key, adt_key, "Target CoW -> Animation", true);
- }
+ const IDDepsNode *id_node_from = operation_from->owner->owner;
+ const IDDepsNode *id_node_to = operation_to->owner->owner;
+ if (id_node_from != id_node_to) {
+ ComponentKey cow_key(id_node_to->id_orig,
+ DEG_NODE_TYPE_COPY_ON_WRITE);
+ add_relation(cow_key, adt_key, "Target CoW -> Animation", true);
}
}
}
@@ -1209,7 +1207,7 @@ void DepsgraphRelationBuilder::build_driver_data(ID *id, FCurve *fcu)
* datablock, which means driver execution should wait for that
* datablock to be copied.
*/
- if (DEG_depsgraph_use_copy_on_write()) {
+ {
PointerRNA id_ptr;
PointerRNA ptr;
RNA_id_pointer_create(id, &id_ptr);
@@ -1886,18 +1884,16 @@ void DepsgraphRelationBuilder::build_lamp(Object *object)
build_nested_nodetree(&lamp->id, lamp->nodetree);
}
- if (DEG_depsgraph_use_copy_on_write()) {
- /* Make sure copy on write of lamp data is always properly updated for
- * visible lamps.
- */
- OperationKey ob_copy_on_write_key(&object->id,
- DEG_NODE_TYPE_COPY_ON_WRITE,
- DEG_OPCODE_COPY_ON_WRITE);
- OperationKey lamp_copy_on_write_key(&lamp->id,
- DEG_NODE_TYPE_COPY_ON_WRITE,
- DEG_OPCODE_COPY_ON_WRITE);
- add_relation(lamp_copy_on_write_key, ob_copy_on_write_key, "Eval Order");
- }
+ /* Make sure copy on write of lamp data is always properly updated for
+ * visible lamps.
+ */
+ OperationKey ob_copy_on_write_key(&object->id,
+ DEG_NODE_TYPE_COPY_ON_WRITE,
+ DEG_OPCODE_COPY_ON_WRITE);
+ OperationKey lamp_copy_on_write_key(&lamp->id,
+ DEG_NODE_TYPE_COPY_ON_WRITE,
+ DEG_OPCODE_COPY_ON_WRITE);
+ add_relation(lamp_copy_on_write_key, ob_copy_on_write_key, "Eval Order");
}
void DepsgraphRelationBuilder::build_nodetree(bNodeTree *ntree)
@@ -2085,9 +2081,6 @@ void DepsgraphRelationBuilder::build_copy_on_write_relations()
*/
void DepsgraphRelationBuilder::build_nested_datablock(ID *owner, ID *id)
{
- if (!DEG_depsgraph_use_copy_on_write()) {
- return;
- }
OperationKey owner_copy_on_write_key(owner,
DEG_NODE_TYPE_COPY_ON_WRITE,
DEG_OPCODE_COPY_ON_WRITE);
diff --git a/source/blender/depsgraph/intern/depsgraph.cc b/source/blender/depsgraph/intern/depsgraph.cc
index 32cbee7597c..a247b458cc7 100644
--- a/source/blender/depsgraph/intern/depsgraph.cc
+++ b/source/blender/depsgraph/intern/depsgraph.cc
@@ -70,18 +70,6 @@ extern "C" {
#include "intern/depsgraph_intern.h"
#include "util/deg_util_foreach.h"
-static bool use_copy_on_write = true;
-
-bool DEG_depsgraph_use_copy_on_write(void)
-{
- return use_copy_on_write;
-}
-
-void DEG_depsgraph_disable_copy_on_write(void)
-{
- use_copy_on_write = false;
-}
-
namespace DEG {
static DEG_EditorUpdateIDCb deg_editor_update_id_cb = NULL;
@@ -340,7 +328,7 @@ IDDepsNode *Depsgraph::add_id_node(ID *id, ID *id_cow_hint)
void Depsgraph::clear_id_nodes()
{
/* Free memory used by ID nodes. */
- if (use_copy_on_write) {
+ {
/* Stupid workaround to ensure we free IDs in a proper order. */
foreach (IDDepsNode *id_node, id_nodes) {
if (id_node->id_cow == NULL) {
diff --git a/source/blender/depsgraph/intern/depsgraph_build.cc b/source/blender/depsgraph/intern/depsgraph_build.cc
index 84b9bad17c9..c39f6222a13 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.cc
+++ b/source/blender/depsgraph/intern/depsgraph_build.cc
@@ -231,9 +231,7 @@ void DEG_graph_build_from_view_layer(Depsgraph *graph,
DEG::DepsgraphRelationBuilder relation_builder(bmain, deg_graph);
relation_builder.begin_build();
relation_builder.build_view_layer(scene, view_layer);
- if (DEG_depsgraph_use_copy_on_write()) {
- relation_builder.build_copy_on_write_relations();
- }
+ relation_builder.build_copy_on_write_relations();
/* Detect and solve cycles. */
DEG::deg_graph_detect_cycles(deg_graph);
diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc b/source/blender/depsgraph/intern/depsgraph_tag.cc
index 8e63bc85499..e22dc331605 100644
--- a/source/blender/depsgraph/intern/depsgraph_tag.cc
+++ b/source/blender/depsgraph/intern/depsgraph_tag.cc
@@ -284,7 +284,7 @@ void depsgraph_tag_component(Depsgraph *graph,
}
}
/* If component depends on copy-on-write, tag it as well. */
- if (DEG_depsgraph_use_copy_on_write() && component_node->depends_on_cow()) {
+ if (component_node->depends_on_cow()) {
ComponentDepsNode *cow_comp =
id_node->find_component(DEG_NODE_TYPE_COPY_ON_WRITE);
cow_comp->tag_update(graph);
diff --git a/source/blender/depsgraph/intern/eval/deg_eval.cc b/source/blender/depsgraph/intern/eval/deg_eval.cc
index 95084717dad..f911383b273 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval.cc
@@ -228,9 +228,6 @@ static void depsgraph_ensure_view_layer(Depsgraph *graph)
* - It was tagged for update of CoW component.
* This allows us to have proper view layer pointer.
*/
- if (!DEG_depsgraph_use_copy_on_write()) {
- return;
- }
Scene *scene_cow = graph->scene_cow;
if (!deg_copy_on_write_is_expanded(&scene_cow->id) ||
scene_cow->id.recalc & ID_RECALC_COPY_ON_WRITE)
diff --git a/source/blender/depsgraph/intern/nodes/deg_node_id.cc b/source/blender/depsgraph/intern/nodes/deg_node_id.cc
index 9f161db73ad..956c23978ab 100644
--- a/source/blender/depsgraph/intern/nodes/deg_node_id.cc
+++ b/source/blender/depsgraph/intern/nodes/deg_node_id.cc
@@ -112,14 +112,6 @@ void IDDepsNode::init(const ID *id, const char *UNUSED(subdata))
void IDDepsNode::init_copy_on_write(ID *id_cow_hint)
{
- /* Early output for non-copy-on-write case: we keep CoW pointer same as
- * an original one.
- */
- if (!DEG_depsgraph_use_copy_on_write()) {
- UNUSED_VARS(id_cow_hint);
- id_cow = id_orig;
- return;
- }
/* Create pointer as early as possible, so we can use it for function
* bindings. Rest of data we'll be copying to the new datablock when
* it is actually needed.
diff --git a/source/creator/creator_args.c b/source/creator/creator_args.c
index 95565b034e9..6973f500f84 100644
--- a/source/creator/creator_args.c
+++ b/source/creator/creator_args.c
@@ -586,9 +586,8 @@ static int arg_handle_print_help(int UNUSED(argc), const char **UNUSED(argv), vo
BLI_argsPrintArgDoc(ba, "--");
- printf("\n");
- printf("Experimental Features:\n");
- BLI_argsPrintArgDoc(ba, "--disable-copy-on-write");
+ //printf("\n");
+ //printf("Experimental Features:\n");
/* Other options _must_ be last (anything not handled will show here) */
printf("\n");
@@ -1289,16 +1288,6 @@ static int arg_handle_threads_set(int argc, const char **argv, void *UNUSED(data
}
}
-static const char arg_handle_use_copy_on_write_doc[] =
-"\n\tUse new dependency graph"
-;
-static int arg_handle_use_copy_on_write(int UNUSED(argc), const char **UNUSED(argv), void *UNUSED(data))
-{
- printf("Disabling copy on write. Only use for testing whether something else is at fault\n");
- DEG_depsgraph_disable_copy_on_write();
- return 0;
-}
-
static const char arg_handle_verbosity_set_doc[] =
"<verbose>\n"
"\tSet logging verbosity level."
@@ -1896,8 +1885,6 @@ void main_args_setup(bContext *C, bArgs *ba)
BLI_argsAdd(ba, 1, NULL, "--debug-gpu-shaders",
CB_EX(arg_handle_debug_mode_generic_set, gpumem), (void *)G_DEBUG_GPU_SHADERS);
- BLI_argsAdd(ba, 1, NULL, "--disable-copy-on-write", CB(arg_handle_use_copy_on_write), NULL);
-
BLI_argsAdd(ba, 1, NULL, "--verbose", CB(arg_handle_verbosity_set), NULL);
BLI_argsAdd(ba, 1, NULL, "--factory-startup", CB(arg_handle_factory_startup_set), NULL);