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-10-19 12:37:28 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-10-19 12:39:11 +0300
commitabc3128011b484c270701211b40831d11c8ac44b (patch)
tree3b2658bb98f322d98c7425cdda728b3f4c6b952b
parentd6b54068d48da9975a997c4fcf2992c0418471eb (diff)
Fix T85779: Cycles not using all threads when using OpenImageDenoise
The thread affinity setting in OIDN can break multithreading on some CPUs. While this leads to somewhat worse performance on CPUs that do work correctly, it's better than having some CPUs use only half the cores.
-rw-r--r--intern/cycles/integrator/denoiser_oidn.cpp1
-rw-r--r--source/blender/compositor/operations/COM_DenoiseOperation.cc1
2 files changed, 2 insertions, 0 deletions
diff --git a/intern/cycles/integrator/denoiser_oidn.cpp b/intern/cycles/integrator/denoiser_oidn.cpp
index ee3b62668a7..cc9a3f51387 100644
--- a/intern/cycles/integrator/denoiser_oidn.cpp
+++ b/intern/cycles/integrator/denoiser_oidn.cpp
@@ -169,6 +169,7 @@ class OIDNDenoiseContext {
OIDNPass oidn_color_access_pass = read_input_pass(oidn_color_pass, oidn_output_pass);
oidn::DeviceRef oidn_device = oidn::newDevice();
+ oidn_device.set("setAffinity", false);
oidn_device.commit();
/* Create a filter for denoising a beauty (color) image using prefiltered auxiliary images too.
diff --git a/source/blender/compositor/operations/COM_DenoiseOperation.cc b/source/blender/compositor/operations/COM_DenoiseOperation.cc
index 53417112974..9b9670c6f06 100644
--- a/source/blender/compositor/operations/COM_DenoiseOperation.cc
+++ b/source/blender/compositor/operations/COM_DenoiseOperation.cc
@@ -64,6 +64,7 @@ class DenoiseFilter {
BLI_mutex_lock(&oidn_lock);
device = oidn::newDevice();
+ device.set("setAffinity", false);
device.commit();
filter = device.newFilter("RT");
initialized_ = true;