Compositor: Allocate OIDN memory after receiving lock.

Related to {T77023}. When using many Denoise nodes the memory in OIDN
are allocated up front. A mutex could stall the process until. This
change will allocate the memory after it received the lock.
This commit is contained in:
Jeroen Bakker 2021-04-12 14:29:49 +02:00
parent 71cb0bdc43
commit 53f277a2e6
1 changed files with 5 additions and 4 deletions

View File

@ -101,6 +101,11 @@ void DenoiseOperation::generateDenoise(float *data,
if (BLI_cpu_support_sse41())
# endif
{
/* Since it's memory intensive, it's better to run only one instance of OIDN at a time.
* OpenImageDenoise is multithreaded internally and should use all available cores nonetheless.
*/
BLI_mutex_lock(&oidn_lock);
oidn::DeviceRef device = oidn::newDevice();
device.commit();
@ -145,10 +150,6 @@ void DenoiseOperation::generateDenoise(float *data,
}
filter.commit();
/* Since it's memory intensive, it's better to run only one instance of OIDN at a time.
* OpenImageDenoise is multithreaded internally and should use all available cores nonetheless.
*/
BLI_mutex_lock(&oidn_lock);
filter.execute();
BLI_mutex_unlock(&oidn_lock);