[Bf-blender-cvs] [db1728096ab] master: Cleanup: Remove unused node socket cache handling

Hans Goudey noreply at git.blender.org
Wed Nov 30 20:30:24 CET 2022


Commit: db1728096ab6bcd05f7b4f087c060a6349b5b2ce
Author: Hans Goudey
Date:   Wed Nov 30 13:25:06 2022 -0600
Branches: master
https://developer.blender.org/rBdb1728096ab6bcd05f7b4f087c060a6349b5b2ce

Cleanup: Remove unused node socket cache handling

This cache was never written to, only "copied" between sockets in one
case, it dates back at least a decade. It doesn't make sense to store
caches on node trees directly anyway, since they can be used in
multiple places.

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

M	source/blender/blenkernel/BKE_node.h
M	source/blender/blenkernel/BKE_node_runtime.hh
M	source/blender/blenkernel/intern/node.cc
M	source/blender/editors/space_node/node_group.cc
M	source/blender/nodes/composite/node_composite_tree.cc
M	source/blender/nodes/composite/node_composite_util.cc
M	source/blender/render/intern/pipeline.cc

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

diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index a8e28ba492a..2cd2fa9ac62 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -405,8 +405,6 @@ typedef struct bNodeTreeType {
   int ui_icon;
 
   /* callbacks */
-  void (*free_cache)(struct bNodeTree *ntree);
-  void (*free_node_cache)(struct bNodeTree *ntree, struct bNode *node);
   /* Iteration over all node classes. */
   void (*foreach_nodeclass)(struct Scene *scene, void *calldata, bNodeClassCallback func);
   /* Check visibility in the node editor */
@@ -521,8 +519,6 @@ void ntreeUpdateAllUsers(struct Main *main, struct ID *id);
  */
 void ntreeSetOutput(struct bNodeTree *ntree);
 
-void ntreeFreeCache(struct bNodeTree *ntree);
-
 void ntreeNodeFlagSet(const bNodeTree *ntree, int flag, bool enable);
 /**
  * Returns localized tree for execution in threads.
diff --git a/source/blender/blenkernel/BKE_node_runtime.hh b/source/blender/blenkernel/BKE_node_runtime.hh
index ef32dcd8351..56d51169934 100644
--- a/source/blender/blenkernel/BKE_node_runtime.hh
+++ b/source/blender/blenkernel/BKE_node_runtime.hh
@@ -133,9 +133,6 @@ class bNodeSocketRuntime : NonCopyable, NonMovable {
   /* Runtime-only cache of the number of input links, for multi-input sockets. */
   short total_inputs = 0;
 
-  /** Cached data from execution. */
-  void *cache = nullptr;
-
   /** Only valid when #topology_cache_is_dirty is false. */
   Vector<bNodeLink *> directly_linked_links;
   Vector<bNodeSocket *> directly_linked_sockets;
diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc
index 8e160607e04..7c437f8fa9f 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -2234,9 +2234,6 @@ static void node_socket_copy(bNodeSocket *sock_dst, const bNodeSocket *sock_src,
       MEM_dupallocN(sock_src->default_attribute_name));
 
   sock_dst->stack_index = 0;
-  /* XXX some compositor nodes (e.g. image, render layers) still store
-   * some persistent buffer data here, need to clear this to avoid dangling pointers. */
-  sock_dst->runtime->cache = nullptr;
 }
 
 namespace blender::bke {
@@ -2923,10 +2920,6 @@ static void node_free_node(bNodeTree *ntree, bNode *node)
   if (ntree) {
     BLI_remlink(&ntree->nodes, node);
 
-    if (ntree->typeinfo->free_node_cache) {
-      ntree->typeinfo->free_node_cache(ntree, node);
-    }
-
     /* texture node has bad habit of keeping exec data around */
     if (ntree->type == NTREE_TEXTURE && ntree->runtime->execdata) {
       ntreeTexEndExecTree(ntree->runtime->execdata);
@@ -3107,17 +3100,6 @@ void ntreeFreeLocalTree(bNodeTree *ntree)
   }
 }
 
-void ntreeFreeCache(bNodeTree *ntree)
-{
-  if (ntree == nullptr) {
-    return;
-  }
-
-  if (ntree->typeinfo->free_cache) {
-    ntree->typeinfo->free_cache(ntree);
-  }
-}
-
 void ntreeSetOutput(bNodeTree *ntree)
 {
   /* find the active outputs, might become tree type dependent handler */
diff --git a/source/blender/editors/space_node/node_group.cc b/source/blender/editors/space_node/node_group.cc
index b6c062a2a83..f95561035a3 100644
--- a/source/blender/editors/space_node/node_group.cc
+++ b/source/blender/editors/space_node/node_group.cc
@@ -889,9 +889,6 @@ static void node_group_make_insert_selected(const bContext &C, bNodeTree &ntree,
     }
   }
 
-  /* node groups don't use internal cached data */
-  ntreeFreeCache(ngroup);
-
   /* create input node */
   bNode *input_node = nodeAddStaticNode(&C, ngroup, NODE_GROUP_INPUT);
   input_node->locx = real_min[0] - center[0] - offsetx;
diff --git a/source/blender/nodes/composite/node_composite_tree.cc b/source/blender/nodes/composite/node_composite_tree.cc
index d821733244f..a2a3d7d1b64 100644
--- a/source/blender/nodes/composite/node_composite_tree.cc
+++ b/source/blender/nodes/composite/node_composite_tree.cc
@@ -62,22 +62,6 @@ static void foreach_nodeclass(Scene * /*scene*/, void *calldata, bNodeClassCallb
   func(calldata, NODE_CLASS_LAYOUT, N_("Layout"));
 }
 
-static void free_node_cache(bNodeTree * /*ntree*/, bNode *node)
-{
-  LISTBASE_FOREACH (bNodeSocket *, sock, &node->outputs) {
-    if (sock->runtime->cache) {
-      sock->runtime->cache = nullptr;
-    }
-  }
-}
-
-static void free_cache(bNodeTree *ntree)
-{
-  LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
-    free_node_cache(ntree, node);
-  }
-}
-
 /* local tree then owns all compbufs */
 static void localize(bNodeTree *localtree, bNodeTree *ntree)
 {
@@ -137,14 +121,6 @@ static void local_merge(Main *bmain, bNodeTree *localtree, bNodeTree *ntree)
           orig_node->storage = BKE_tracking_distortion_copy((MovieDistortion *)lnode->storage);
         }
       }
-
-      for (lsock = (bNodeSocket *)lnode->outputs.first; lsock; lsock = lsock->next) {
-        if (bNodeSocket *orig_socket = nodeFindSocket(orig_node, SOCK_OUT, lsock->identifier)) {
-          orig_socket->runtime->cache = lsock->runtime->cache;
-          lsock->runtime->cache = nullptr;
-          orig_socket = nullptr;
-        }
-      }
     }
   }
 }
@@ -186,8 +162,6 @@ void register_node_tree_type_cmp()
   tt->ui_icon = ICON_NODE_COMPOSITING;
   strcpy(tt->ui_description, N_("Compositing nodes"));
 
-  tt->free_cache = free_cache;
-  tt->free_node_cache = free_node_cache;
   tt->foreach_nodeclass = foreach_nodeclass;
   tt->localize = localize;
   tt->local_merge = local_merge;
diff --git a/source/blender/nodes/composite/node_composite_util.cc b/source/blender/nodes/composite/node_composite_util.cc
index 9176e0f5284..afe11de059d 100644
--- a/source/blender/nodes/composite/node_composite_util.cc
+++ b/source/blender/nodes/composite/node_composite_util.cc
@@ -22,12 +22,6 @@ bool cmp_node_poll_default(bNodeType * /*ntype*/, bNodeTree *ntree, const char *
 
 void cmp_node_update_default(bNodeTree * /*ntree*/, bNode *node)
 {
-  LISTBASE_FOREACH (bNodeSocket *, sock, &node->outputs) {
-    if (sock->runtime->cache) {
-      // free_compbuf(sock->cache);
-      // sock->cache = nullptr;
-    }
-  }
   node->runtime->need_exec = 1;
 }
 
diff --git a/source/blender/render/intern/pipeline.cc b/source/blender/render/intern/pipeline.cc
index f59c4761646..3b8a2a1df33 100644
--- a/source/blender/render/intern/pipeline.cc
+++ b/source/blender/render/intern/pipeline.cc
@@ -1115,9 +1115,6 @@ static void do_render_compositor(Render *re)
   int update_newframe = 0;
 
   if (compositor_needs_render(re->pipeline_scene_eval, 1)) {
-    /* save memory... free all cached images */
-    ntreeFreeCache(ntree);
-
     /* render the frames
      * it could be optimized to render only the needed view
      * but what if a scene has a different number of views



More information about the Bf-blender-cvs mailing list