[Bf-blender-cvs] [32c76878599] master: Fix T92601: Disable profiling when the profiler is deemed not active.

William Leeson noreply at git.blender.org
Fri Nov 12 10:07:44 CET 2021


Commit: 32c768785991550c269c42223ee60933efab149b
Author: William Leeson
Date:   Fri Nov 12 10:01:23 2021 +0100
Branches: master
https://developer.blender.org/rB32c768785991550c269c42223ee60933efab149b

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 530e60d6750..2f6c3cf5aca 100644
--- a/intern/cycles/integrator/path_trace_work_cpu.cpp
+++ b/intern/cycles/integrator/path_trace_work_cpu.cpp
@@ -78,8 +78,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_);
@@ -108,9 +110,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