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/device/device.cpp')
-rw-r--r--intern/cycles/device/device.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/intern/cycles/device/device.cpp b/intern/cycles/device/device.cpp
index 407f73e8451..eb8fb8040e3 100644
--- a/intern/cycles/device/device.cpp
+++ b/intern/cycles/device/device.cpp
@@ -375,7 +375,7 @@ Device *Device::create(DeviceInfo &info, Stats &stats, Profiler &profiler, bool
}
#endif
- Device *device;
+ Device *device = NULL;
switch (info.type) {
case DEVICE_CPU:
@@ -385,16 +385,12 @@ Device *Device::create(DeviceInfo &info, Stats &stats, Profiler &profiler, bool
case DEVICE_CUDA:
if (device_cuda_init())
device = device_cuda_create(info, stats, profiler, background);
- else
- device = NULL;
break;
#endif
#ifdef WITH_OPTIX
case DEVICE_OPTIX:
if (device_optix_init())
device = device_optix_create(info, stats, profiler, background);
- else
- device = NULL;
break;
#endif
#ifdef WITH_NETWORK
@@ -406,12 +402,14 @@ Device *Device::create(DeviceInfo &info, Stats &stats, Profiler &profiler, bool
case DEVICE_OPENCL:
if (device_opencl_init())
device = device_opencl_create(info, stats, profiler, background);
- else
- device = NULL;
break;
#endif
default:
- return NULL;
+ break;
+ }
+
+ if (device == NULL) {
+ device = device_dummy_create(info, stats, profiler, background);
}
return device;
@@ -549,6 +547,14 @@ vector<DeviceInfo> Device::available_devices(uint mask)
return devices;
}
+DeviceInfo Device::dummy_device(const string &error_msg)
+{
+ DeviceInfo info;
+ info.type = DEVICE_DUMMY;
+ info.error_msg = error_msg;
+ return info;
+}
+
string Device::device_capabilities(uint mask)
{
thread_scoped_lock lock(device_mutex);