diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-05-11 18:17:00 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-05-11 23:19:44 +0300 |
commit | 0830458bcccd3df1c3e79016d68cd73b12e44e1f (patch) | |
tree | 8e908344b83ce6420fd5a0d0fde80e6f75bda631 /intern/cycles/blender | |
parent | 15b180b2400c2728f3ac2180dacc4c46131877df (diff) |
Fix T88093: persistent data and particle object instancing not working
Diffstat (limited to 'intern/cycles/blender')
-rw-r--r-- | intern/cycles/blender/blender_sync.cpp | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index aa87ac1dd81..4ec0477c585 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -739,12 +739,18 @@ void BlenderSync::free_data_after_sync(BL::Depsgraph &b_depsgraph) * caches to be releases from blender side in order to reduce peak memory * footprint during synchronization process. */ + const bool is_interface_locked = b_engine.render() && b_engine.render().use_lock_interface(); - const bool can_free_caches = (BlenderSession::headless || is_interface_locked) && - /* Baking re-uses the depsgraph multiple times, clearing crashes - * reading un-evaluated mesh data which isn't aligned with the - * geometry we're baking, see T71012. */ - !scene->bake_manager->get_baking(); + const bool is_persistent_data = b_engine.render() && b_engine.render().use_persistent_data(); + const bool can_free_caches = + (BlenderSession::headless || is_interface_locked) && + /* Baking re-uses the depsgraph multiple times, clearing crashes + * reading un-evaluated mesh data which isn't aligned with the + * geometry we're baking, see T71012. */ + !scene->bake_manager->get_baking() && + /* Persistent data must main caches for performance and correctness. */ + !is_persistent_data; + if (!can_free_caches) { return; } |