[Bf-blender-cvs] [268ff5e3489] cycles-x: Fix possible race condition in Cycles X

Sergey Sharybin noreply at git.blender.org
Mon May 17 11:53:01 CEST 2021


Commit: 268ff5e3489a7fcf79fd9a2dd87c642f8d94d3be
Author: Sergey Sharybin
Date:   Mon May 17 11:46:04 2021 +0200
Branches: cycles-x
https://developer.blender.org/rB268ff5e3489a7fcf79fd9a2dd87c642f8d94d3be

Fix possible race condition in Cycles X

Not a fix easily measurable by artists, but something what is correct
from multi-threaded environment.

Update number of samples in the scheduler in a safe place, where we
know that scheduler is not accessing the value.

===================================================================

M	intern/cycles/render/session.cpp

===================================================================

diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index 5f0ea4a8e9c..013c161590a 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -60,9 +60,6 @@ Session::Session(const SessionParams &params_, const SceneParams &scene_params)
 
   scene = new Scene(scene_params, device);
 
-  /* Configure scheduler */
-  render_scheduler_.set_num_samples(params.samples);
-
   /* Configure path tracer. */
   path_trace_ = make_unique<PathTrace>(device, &scene->dscene, render_scheduler_);
   path_trace_->set_progress(&progress);
@@ -267,6 +264,8 @@ RenderWork Session::run_update_for_next_iteration()
     path_trace_->set_adaptive_sampling(adaptive_sampling);
   }
 
+  render_scheduler_.set_num_samples(params.samples);
+
   while (have_tiles) {
     render_work = render_scheduler_.get_render_work();
     if (render_work) {
@@ -383,9 +382,6 @@ void Session::set_samples(int samples)
   if (samples != params.samples) {
     params.samples = samples;
 
-    /* TODO(sergey): Verify whether threading synchronization is needed here. */
-    render_scheduler_.set_num_samples(samples);
-
     pause_cond.notify_all();
   }
 }



More information about the Bf-blender-cvs mailing list