Fix T94609: geometry nodes always re-evaluated with image texture nodes

previously_visible_components_mask was not preserved for Image ID nodes, which
meant it was always detected as newly visible and tagged to be updated, which
in turn caused the geometry nodes using it to be always updated also.

Reviewed By: sergey, JacquesLucke

Maniphest Tasks: T94609

Differential Revision: https://developer.blender.org/D14217
This commit is contained in:
Brecht Van Lommel 2022-03-02 11:03:58 +01:00 committed by Sergey Sharybin
parent 5086913b28
commit 383a6ee78c
Notes: blender-bot 2024-03-25 12:30:38 +01:00
Referenced by issue #94609, Modifiers are always reevaluated when using an image texture data-block
1 changed files with 3 additions and 9 deletions

View File

@ -351,16 +351,10 @@ void DepsgraphNodeBuilder::begin_build()
* same as id_orig. Additionally, such ID might have been removed, which makes the check
* for whether id_cow is expanded to access freed memory. In order to deal with this we
* check whether CoW is needed based on a scalar value which does not lead to access of
* possibly deleted memory.
* Additionally, this saves some space in the map by skipping mapping for datablocks which
* do not need CoW, */
if (!deg_copy_on_write_is_needed(id_node->id_type)) {
id_node->id_cow = nullptr;
continue;
}
* possibly deleted memory. */
IDInfo *id_info = (IDInfo *)MEM_mallocN(sizeof(IDInfo), "depsgraph id info");
if (deg_copy_on_write_is_expanded(id_node->id_cow) && id_node->id_orig != id_node->id_cow) {
if (deg_copy_on_write_is_needed(id_node->id_type) &&
deg_copy_on_write_is_expanded(id_node->id_cow) && id_node->id_orig != id_node->id_cow) {
id_info->id_cow = id_node->id_cow;
}
else {