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:
Diffstat (limited to 'intern/cycles/integrator/denoiser_oidn.cpp')
-rw-r--r--intern/cycles/integrator/denoiser_oidn.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/intern/cycles/integrator/denoiser_oidn.cpp b/intern/cycles/integrator/denoiser_oidn.cpp
index a08aec513fc..4676e69c4fb 100644
--- a/intern/cycles/integrator/denoiser_oidn.cpp
+++ b/intern/cycles/integrator/denoiser_oidn.cpp
@@ -37,8 +37,6 @@ OIDNDenoiser::OIDNDenoiser(Device *path_trace_device, const DenoiseParams &param
: Denoiser(path_trace_device, params)
{
DCHECK_EQ(params.type, DENOISER_OPENIMAGEDENOISE);
-
- DCHECK(openimagedenoise_supported()) << "OpenImageDenoiser is not supported on this platform.";
}
#ifdef WITH_OPENIMAGEDENOISE
@@ -585,6 +583,9 @@ bool OIDNDenoiser::denoise_buffer(const BufferParams &buffer_params,
const int num_samples,
bool allow_inplace_modification)
{
+ DCHECK(openimagedenoise_supported())
+ << "OpenImageDenoiser is not supported on this platform or build.";
+
#ifdef WITH_OPENIMAGEDENOISE
thread_scoped_lock lock(mutex_);
@@ -635,4 +636,20 @@ uint OIDNDenoiser::get_device_type_mask() const
return DEVICE_MASK_CPU;
}
+Device *OIDNDenoiser::ensure_denoiser_device(Progress *progress)
+{
+#ifndef WITH_OPENIMAGEDENOISE
+ path_trace_device_->set_error("Build without OpenImageDenoiser");
+ return nullptr;
+#else
+ if (!openimagedenoise_supported()) {
+ path_trace_device_->set_error(
+ "OpenImageDenoiser is not supported on this CPU: missing SSE 4.1 support");
+ return nullptr;
+ }
+
+ return Denoiser::ensure_denoiser_device(progress);
+#endif
+}
+
CCL_NAMESPACE_END