From f3428ed9af0e35b8ead593ab1a1f01ebc108149e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 20 Jun 2025 16:01:13 +0200 Subject: [PATCH 1/2] Anim: avoid 'unshare' node for custom properties and shapekey values When creating depsgraph relationships for drivers, avoid creating the 'unshare' depsgraph node for drivers on custom properties and on shapekey `value` properties. This should fix a significant part of the performance regression mentioned in #140706. Pull Request: https://projects.blender.org/blender/blender/pulls/140724 --- .../builder/deg_builder_relations_drivers.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations_drivers.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations_drivers.cc index 6aff7c1bfd2..95f6e3da410 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations_drivers.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations_drivers.cc @@ -245,12 +245,26 @@ bool data_path_maybe_shared(const ID &id, const StringRef data_path) /* As it is hard to generally detect implicit sharing, this is implemented as * a 'known to not share' list. */ + /* Allow concurrent writes to custom properties. #140706 shows that this + * shouldn't be a problem in practice. */ + if (data_path.startswith("[\"") && data_path.endswith("\"]")) { + return false; + } + if (GS(id.name) == ID_OB) { const Object &ob = *reinterpret_cast(&id); const bool is_thread_safe = (ob.type == OB_ARMATURE && data_path.startswith("pose.bones[")); return !is_thread_safe; } + /* Allow concurrent writes to shapekey values. #140706 shows that this + * shouldn't be a problem in practice. */ + if (GS(id.name) == ID_KE) { + const bool is_thread_safe = data_path.startswith("key_blocks[") && + data_path.endswith("].value"); + return !is_thread_safe; + } + return true; } From 963d23b0debc4c37dfcfca6bfceec71b4ea4bd77 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 20 Jun 2025 17:26:15 +0200 Subject: [PATCH 2/2] Make update: Tweak logic for the LFS fallback Check for both git.b.o and projects.b.o pars of the URL. The LFS objects should be able to be fetched from either of those domains. Pull Request: https://projects.blender.org/blender/blender/pulls/140647 --- build_files/utils/make_update.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_files/utils/make_update.py b/build_files/utils/make_update.py index 19caa7caa61..2d46078ff51 100755 --- a/build_files/utils/make_update.py +++ b/build_files/utils/make_update.py @@ -634,7 +634,7 @@ def lfs_fallback_setup(args: argparse.Namespace) -> None: for remote in remotes: url = make_utils.git_get_remote_url(args.git_command, remote) - if "projects.blender.org" not in url: + if "projects.blender.org" not in url and "git.blender.org" not in url: make_utils.git_set_config(args.git_command, f"lfs.{remote}.searchall", "true") else: add_fallback_remote = False