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:
authorWilliam Leeson <leesonw>2021-11-12 12:01:23 +0300
committerWilliam Leeson <william@blender.org>2021-11-12 12:16:01 +0300
commit456876208b16710318a4576b9b7554abc4fa1125 (patch)
tree90fdd9b0894dae9431e9470789535aeb3f4a07b4
parent1061f5a1bab9b65702d90706eb1b3d383984d0fb (diff)
Fix T92601: Disable profiling when the profiler is deemed not active.
Adds a method to profiler that can be used to check if it is active. This is used to determine if stop_profiling and start_profiling should be called. | patch | Juans Scene UI 256 samples | Juans Scene bg 256 samples | junkshop UI | junkshop bg | | No patch | 6:16.59 | 4:05.37 | 2:08.48 | 1:59.7 | | D13187 | 4:12.15 | 3:57.36 | 2:07.25 | 1:58.16 | | D13185 | 4.11.18 |3:54.74 | 2:07.44 | 1:58.03 | | D13190 | 4:12.39 | 3:55.42 | 2:07.62 | 1:58.68 | UI - means rendered from within Blender bg - means rendered from the command line using ##blender -b scene.blend -f 1## Reviewed By: sergey, brecht Maniphest Tasks: T92601 Differential Revision: https://developer.blender.org/D13190
-rw-r--r--intern/cycles/integrator/path_trace_work_cpu.cpp13
-rw-r--r--intern/cycles/util/profiling.cpp5
-rw-r--r--intern/cycles/util/profiling.h2
3 files changed, 15 insertions, 5 deletions
diff --git a/intern/cycles/integrator/path_trace_work_cpu.cpp b/intern/cycles/integrator/path_trace_work_cpu.cpp
index 36ce2be9f6d..12dcc899dbb 100644
--- a/intern/cycles/integrator/path_trace_work_cpu.cpp
+++ b/intern/cycles/integrator/path_trace_work_cpu.cpp
@@ -77,8 +77,10 @@ void PathTraceWorkCPU::render_samples(RenderStatistics &statistics,
const int64_t image_height = effective_buffer_params_.height;
const int64_t total_pixels_num = image_width * image_height;
- for (CPUKernelThreadGlobals &kernel_globals : kernel_thread_globals_) {
- kernel_globals.start_profiling();
+ if (device_->profiler.active()) {
+ for (CPUKernelThreadGlobals &kernel_globals : kernel_thread_globals_) {
+ kernel_globals.start_profiling();
+ }
}
tbb::task_arena local_arena = local_tbb_arena_create(device_);
@@ -106,9 +108,10 @@ void PathTraceWorkCPU::render_samples(RenderStatistics &statistics,
render_samples_full_pipeline(kernel_globals, work_tile, samples_num);
});
});
-
- for (CPUKernelThreadGlobals &kernel_globals : kernel_thread_globals_) {
- kernel_globals.stop_profiling();
+ if (device_->profiler.active()) {
+ for (CPUKernelThreadGlobals &kernel_globals : kernel_thread_globals_) {
+ kernel_globals.stop_profiling();
+ }
}
statistics.occupancy = 1.0f;
diff --git a/intern/cycles/util/profiling.cpp b/intern/cycles/util/profiling.cpp
index 55b35b7320f..d6df1b0b807 100644
--- a/intern/cycles/util/profiling.cpp
+++ b/intern/cycles/util/profiling.cpp
@@ -171,4 +171,9 @@ bool Profiler::get_object(int object, uint64_t &samples, uint64_t &hits)
return true;
}
+bool Profiler::active() const
+{
+ return (worker != nullptr);
+}
+
CCL_NAMESPACE_END
diff --git a/intern/cycles/util/profiling.h b/intern/cycles/util/profiling.h
index b30aac90879..4ced1d90371 100644
--- a/intern/cycles/util/profiling.h
+++ b/intern/cycles/util/profiling.h
@@ -96,6 +96,8 @@ class Profiler {
bool get_shader(int shader, uint64_t &samples, uint64_t &hits);
bool get_object(int object, uint64_t &samples, uint64_t &hits);
+ bool active() const;
+
protected:
void run();