[Bf-blender-cvs] [456876208b1] blender-v3.0-release: Fix T92601: Disable profiling when the profiler is deemed not active.
William Leeson
noreply at git.blender.org
Fri Nov 12 10:21:47 CET 2021
Commit: 456876208b16710318a4576b9b7554abc4fa1125
Author: William Leeson
Date: Fri Nov 12 10:01:23 2021 +0100
Branches: blender-v3.0-release
https://developer.blender.org/rB456876208b16710318a4576b9b7554abc4fa1125
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
===================================================================
M intern/cycles/integrator/path_trace_work_cpu.cpp
M intern/cycles/util/profiling.cpp
M intern/cycles/util/profiling.h
===================================================================
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();
More information about the Bf-blender-cvs
mailing list