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 <brechtvanlommel@gmail.com>2018-11-30 01:30:17 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2018-11-30 01:43:27 +0300
commita8b8da55672c2177c55709321df3514355b513f4 (patch)
tree97c730a1b39e60ecd15ad5c73b63892329daae1e /intern/cycles/render
parent8ac2d85d2fd3f8b997e9c9bddadada0dc7bdaf37 (diff)
Fix T58183: crash with CPU + GPU rendering after profiling changes.
Multi-device was not passing along profiler to the CPU.
Diffstat (limited to 'intern/cycles/render')
-rw-r--r--intern/cycles/render/session.cpp15
-rw-r--r--intern/cycles/render/session.h1
-rw-r--r--intern/cycles/render/stats.cpp4
-rw-r--r--intern/cycles/render/stats.h2
4 files changed, 11 insertions, 11 deletions
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index a8374b662d0..d6d0ffb4a6b 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -47,13 +47,14 @@ Session::Session(const SessionParams& params_)
tile_manager(params.progressive, params.samples, params.tile_size, params.start_resolution,
params.background == false || params.progressive_refine, params.background, params.tile_order,
max(params.device.multi_devices.size(), 1), params.pixel_size),
- stats()
+ stats(),
+ profiler()
{
device_use_gl = ((params.device.type != DEVICE_CPU) && !params.background);
TaskScheduler::init(params.threads);
- device = Device::create(params.device, stats, params.background);
+ device = Device::create(params.device, stats, profiler, params.background);
if(params.background && !params.write_render_cb) {
buffers = NULL;
@@ -251,7 +252,7 @@ void Session::run_gpu()
/* update scene */
scoped_timer update_timer;
if(update_scene()) {
- stats.profiler.reset(scene->shaders.size(), scene->objects.size());
+ profiler.reset(scene->shaders.size(), scene->objects.size());
}
progress.add_skip_time(update_timer, params.background);
@@ -588,7 +589,7 @@ void Session::run_cpu()
/* update scene */
scoped_timer update_timer;
if(update_scene()) {
- stats.profiler.reset(scene->shaders.size(), scene->objects.size());
+ profiler.reset(scene->shaders.size(), scene->objects.size());
}
progress.add_skip_time(update_timer, params.background);
@@ -734,7 +735,7 @@ void Session::run()
load_kernels();
if(params.use_profiling && (params.device.type == DEVICE_CPU)) {
- stats.profiler.start();
+ profiler.start();
}
/* session thread loop */
@@ -751,7 +752,7 @@ void Session::run()
run_cpu();
}
- stats.profiler.stop();
+ profiler.stop();
/* progress update */
if(progress.get_cancel())
@@ -1069,7 +1070,7 @@ 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);
+ render_stats->collect_profiling(scene, profiler);
}
}
diff --git a/intern/cycles/render/session.h b/intern/cycles/render/session.h
index db07c758427..c7f590915e7 100644
--- a/intern/cycles/render/session.h
+++ b/intern/cycles/render/session.h
@@ -149,6 +149,7 @@ public:
SessionParams params;
TileManager tile_manager;
Stats stats;
+ Profiler profiler;
function<void(RenderTile&)> write_render_tile_cb;
function<void(RenderTile&, bool)> update_render_tile_cb;
diff --git a/intern/cycles/render/stats.cpp b/intern/cycles/render/stats.cpp
index 9a7c5a6c1ad..4245745944d 100644
--- a/intern/cycles/render/stats.cpp
+++ b/intern/cycles/render/stats.cpp
@@ -227,12 +227,10 @@ RenderStats::RenderStats() {
has_profiling = false;
}
-void RenderStats::collect_profiling(Scene *scene, Stats *stats)
+void RenderStats::collect_profiling(Scene *scene, Profiler& prof)
{
has_profiling = true;
- Profiler &prof = stats->profiler;
-
kernel = NamedNestedSampleStats("Total render time", prof.get_event(PROFILING_UNKNOWN));
kernel.add_entry("Ray setup", prof.get_event(PROFILING_RAY_SETUP));
diff --git a/intern/cycles/render/stats.h b/intern/cycles/render/stats.h
index ce0529bb8bd..33fe1f4b185 100644
--- a/intern/cycles/render/stats.h
+++ b/intern/cycles/render/stats.h
@@ -144,7 +144,7 @@ public:
string full_report();
/* Collect kernel sampling information from Stats. */
- void collect_profiling(Scene *scene, Stats *stats);
+ void collect_profiling(Scene *scene, Profiler& prof);
bool has_profiling;