From 2fd657db5b2b34aab32cd26b2f65ef7c94f0104a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 2 Dec 2021 16:34:16 +0100 Subject: Fix T93560: crash with image paint undo and cycles preview render Cycles preview rendering could free the image buffers being used by drawing in another thread due to a race condition. This race condition was unlikely before, but now that preview renders are started right before we draw the image in the image editor or load it as a texture in the 3D viewport, it's likely to happen. As we are close to release this is too risky to fix properly, just avoid freeing the cache for preview renders instead and accept increased memory usage in some cases. --- intern/cycles/blender/image.cpp | 10 ++++++++-- intern/cycles/blender/image.h | 2 +- intern/cycles/blender/shader.cpp | 8 +++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/intern/cycles/blender/image.cpp b/intern/cycles/blender/image.cpp index 3ea3a47c1f4..4f5744d86a8 100644 --- a/intern/cycles/blender/image.cpp +++ b/intern/cycles/blender/image.cpp @@ -24,8 +24,14 @@ CCL_NAMESPACE_BEGIN /* Packed Images */ -BlenderImageLoader::BlenderImageLoader(BL::Image b_image, int frame) - : b_image(b_image), frame(frame), free_cache(!b_image.has_data()) +BlenderImageLoader::BlenderImageLoader(BL::Image b_image, + const int frame, + const bool is_preview_render) + : b_image(b_image), + frame(frame), + /* Don't free cache for preview render to avoid race condition from T93560, to be fixed + properly later as we are close to release. */ + free_cache(!is_preview_render && !b_image.has_data()) { } diff --git a/intern/cycles/blender/image.h b/intern/cycles/blender/image.h index 6f1e72c21af..b4aa4299ed1 100644 --- a/intern/cycles/blender/image.h +++ b/intern/cycles/blender/image.h @@ -25,7 +25,7 @@ CCL_NAMESPACE_BEGIN class BlenderImageLoader : public ImageLoader { public: - BlenderImageLoader(BL::Image b_image, int frame); + BlenderImageLoader(BL::Image b_image, const int frame, const bool is_preview_render); bool load_metadata(const ImageDeviceFeatures &features, ImageMetaData &metadata) override; bool load_pixels(const ImageMetaData &metadata, diff --git a/intern/cycles/blender/shader.cpp b/intern/cycles/blender/shader.cpp index 0cd9052b47a..0f17834906d 100644 --- a/intern/cycles/blender/shader.cpp +++ b/intern/cycles/blender/shader.cpp @@ -762,7 +762,8 @@ static ShaderNode *add_node(Scene *scene, int scene_frame = b_scene.frame_current(); int image_frame = image_user_frame_number(b_image_user, b_image, scene_frame); image->handle = scene->image_manager->add_image( - new BlenderImageLoader(b_image, image_frame), image->image_params()); + new BlenderImageLoader(b_image, image_frame, b_engine.is_preview()), + image->image_params()); } else { ustring filename = ustring( @@ -797,8 +798,9 @@ static ShaderNode *add_node(Scene *scene, if (is_builtin) { int scene_frame = b_scene.frame_current(); int image_frame = image_user_frame_number(b_image_user, b_image, scene_frame); - env->handle = scene->image_manager->add_image(new BlenderImageLoader(b_image, image_frame), - env->image_params()); + env->handle = scene->image_manager->add_image( + new BlenderImageLoader(b_image, image_frame, b_engine.is_preview()), + env->image_params()); } else { env->set_filename( -- cgit v1.2.3 From 7e60d8a7134932278ec4f01ecff76b93502d421b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 2 Dec 2021 16:03:51 +0100 Subject: Fix missing Blender logo in Windows store package D9681 was not properly merged to all branches, leaving a path to a non-existent icon file in the maniphest. --- release/windows/msix/AppxManifest.xml.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/windows/msix/AppxManifest.xml.template b/release/windows/msix/AppxManifest.xml.template index 9289a67efef..e1b267472a3 100644 --- a/release/windows/msix/AppxManifest.xml.template +++ b/release/windows/msix/AppxManifest.xml.template @@ -5,7 +5,7 @@ Blender[LTSORNOT] Blender Foundation Blender [VERSION] is the Free and Open Source 3D creation suite - Assets\StoreLogo.png + Assets\StoreLogo.scale-100.png -- cgit v1.2.3