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:
authorCampbell Barton <ideasman42@gmail.com>2018-11-29 04:55:58 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-11-29 04:55:58 +0300
commit9893fee4e6ce5949c8d3274b2746855b3095258f (patch)
tree973d8b46af8d83705ecc97c21f12bbb1799af2a3 /intern/cycles/render/session.cpp
parent535984a848865c07a39610b32a53432d1a078c59 (diff)
parent140f2209b61d637411cfbc22c755703c6220278f (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'intern/cycles/render/session.cpp')
-rw-r--r--intern/cycles/render/session.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index db13564037e..3854a14f02c 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -250,7 +250,9 @@ void Session::run_gpu()
if(!no_tiles) {
/* update scene */
scoped_timer update_timer;
- update_scene();
+ if(update_scene()) {
+ stats.profiler.reset(scene->shaders.size(), scene->objects.size());
+ }
progress.add_skip_time(update_timer, params.background);
if(!device->error_message().empty())
@@ -585,7 +587,9 @@ void Session::run_cpu()
/* update scene */
scoped_timer update_timer;
- update_scene();
+ if(update_scene()) {
+ stats.profiler.reset(scene->shaders.size(), scene->objects.size());
+ }
progress.add_skip_time(update_timer, params.background);
if(!device->error_message().empty())
@@ -729,6 +733,10 @@ void Session::run()
/* load kernels */
load_kernels();
+ if(params.use_profiling && (params.device.type == DEVICE_CPU)) {
+ stats.profiler.start();
+ }
+
/* session thread loop */
progress.set_status("Waiting for render to start");
@@ -743,6 +751,8 @@ void Session::run()
run_cpu();
}
+ stats.profiler.stop();
+
/* progress update */
if(progress.get_cancel())
progress.set_status("Cancel", progress.get_cancel_message());
@@ -825,7 +835,7 @@ void Session::wait()
session_thread = NULL;
}
-void Session::update_scene()
+bool Session::update_scene()
{
thread_scoped_lock scene_lock(scene->mutex);
@@ -876,7 +886,10 @@ void Session::update_scene()
progress.set_status("Updating Scene");
MEM_GUARDED_CALL(&progress, scene->device_update, device, progress);
+
+ return true;
}
+ return false;
}
void Session::update_status_time(bool show_pause, bool show_done)
@@ -1052,6 +1065,14 @@ void Session::device_free()
*/
}
+void Session::collect_statistics(RenderStats *render_stats)
+{
+ scene->collect_statistics(render_stats);
+ if(params.use_profiling && (params.device.type == DEVICE_CPU)) {
+ render_stats->collect_profiling(scene, &stats);
+ }
+}
+
int Session::get_max_closure_count()
{
int max_closures = 0;