diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-12-02 18:43:25 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-12-02 18:43:25 +0300 |
commit | e6a732daad0588be17b71e4f928e5809477bd4c9 (patch) | |
tree | 030ed5dc3d0964d97c08bbf33bdfdf446edba755 /intern | |
parent | aec56e562a2799ea764671206f7b3b889b69829d (diff) | |
parent | 7e60d8a7134932278ec4f01ecff76b93502d421b (diff) |
Merge branch 'blender-v3.0-release'
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/blender/image.cpp | 10 | ||||
-rw-r--r-- | intern/cycles/blender/image.h | 2 | ||||
-rw-r--r-- | 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( |