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 <brecht@blender.org>2021-09-29 20:20:11 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-09-29 21:25:16 +0300
commit19785cb022f7b279dd78f2c533712f26fc0bc629 (patch)
tree11b2867a796f409ce1078c195f79f348a3955e88
parent22c61e80605079141293c749de37cbe85bf2b33b (diff)
Fix Cycles CPU performance regression after recent change for intersections size
This struct is much bigger now, and does not actually need to be fully zero initialized.
-rw-r--r--intern/cycles/integrator/path_trace_work_cpu.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/intern/cycles/integrator/path_trace_work_cpu.cpp b/intern/cycles/integrator/path_trace_work_cpu.cpp
index b9a33b64051..14658d4d1ce 100644
--- a/intern/cycles/integrator/path_trace_work_cpu.cpp
+++ b/intern/cycles/integrator/path_trace_work_cpu.cpp
@@ -19,6 +19,8 @@
#include "device/cpu/kernel.h"
#include "device/device.h"
+#include "kernel/kernel_path_state.h"
+
#include "integrator/pass_accessor_cpu.h"
#include "render/buffers.h"
@@ -116,13 +118,17 @@ void PathTraceWorkCPU::render_samples_full_pipeline(KernelGlobals *kernel_global
const KernelWorkTile &work_tile,
const int samples_num)
{
- const bool has_shadow_catcher = device_scene_->data.integrator.has_shadow_catcher;
const bool has_bake = device_scene_->data.bake.use;
- IntegratorStateCPU integrator_states[2] = {};
+ IntegratorStateCPU integrator_states[2];
IntegratorStateCPU *state = &integrator_states[0];
- IntegratorStateCPU *shadow_catcher_state = &integrator_states[1];
+ IntegratorStateCPU *shadow_catcher_state = nullptr;
+
+ if (device_scene_->data.integrator.has_shadow_catcher) {
+ shadow_catcher_state = &integrator_states[1];
+ path_state_init_queues(kernel_globals, shadow_catcher_state);
+ }
KernelWorkTile sample_work_tile = work_tile;
float *render_buffer = buffers_->buffer.data();
@@ -147,7 +153,7 @@ void PathTraceWorkCPU::render_samples_full_pipeline(KernelGlobals *kernel_global
kernels_.integrator_megakernel(kernel_globals, state, render_buffer);
- if (has_shadow_catcher) {
+ if (shadow_catcher_state) {
kernels_.integrator_megakernel(kernel_globals, shadow_catcher_state, render_buffer);
}