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:
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
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue