Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2021-12-02 18:43:25 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-12-02 18:43:25 +0300
commite6a732daad0588be17b71e4f928e5809477bd4c9 (patch)
tree030ed5dc3d0964d97c08bbf33bdfdf446edba755 /intern/cycles/blender
parentaec56e562a2799ea764671206f7b3b889b69829d (diff)
parent7e60d8a7134932278ec4f01ecff76b93502d421b (diff)
Merge branch 'blender-v3.0-release'
Diffstat (limited to 'intern/cycles/blender')
-rw-r--r--intern/cycles/blender/image.cpp10
-rw-r--r--intern/cycles/blender/image.h2
-rw-r--r--intern/cycles/blender/shader.cpp8
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(