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

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);