diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-11-29 04:55:58 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-11-29 04:55:58 +0300 |
commit | 9893fee4e6ce5949c8d3274b2746855b3095258f (patch) | |
tree | 973d8b46af8d83705ecc97c21f12bbb1799af2a3 /intern/cycles/render/session.cpp | |
parent | 535984a848865c07a39610b32a53432d1a078c59 (diff) | |
parent | 140f2209b61d637411cfbc22c755703c6220278f (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'intern/cycles/render/session.cpp')
-rw-r--r-- | intern/cycles/render/session.cpp | 27 |
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; |