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
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2020-05-14 05:54:45 +0300
committerBrecht Van Lommel <brecht@blender.org>2020-05-14 17:07:22 +0300
commit97f50c71b9ef3b2a4030b172d48e940f4aa5d87d (patch)
tree4ea8948e51208363c53a51dbad4271d8099d83e2 /intern
parent16b9841fc15191acca89c9f7ebe86b520d730d85 (diff)
Fix --debug-cycles printing CUDA devices twice
Reuse the CUDA devices list for Optix device detection.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/device/device.cpp12
-rw-r--r--intern/cycles/device/device_intern.h2
-rw-r--r--intern/cycles/device/device_optix.cpp18
3 files changed, 14 insertions, 18 deletions
diff --git a/intern/cycles/device/device.cpp b/intern/cycles/device/device.cpp
index dfbf57e8b88..bad156d40bf 100644
--- a/intern/cycles/device/device.cpp
+++ b/intern/cycles/device/device.cpp
@@ -494,16 +494,18 @@ vector<DeviceInfo> Device::available_devices(uint mask)
}
#endif
-#ifdef WITH_CUDA
- if (mask & DEVICE_MASK_CUDA) {
+#if defined(WITH_CUDA) || defined(WITH_OPTIX)
+ if (mask & (DEVICE_MASK_CUDA | DEVICE_MASK_OPTIX)) {
if (!(devices_initialized_mask & DEVICE_MASK_CUDA)) {
if (device_cuda_init()) {
device_cuda_info(cuda_devices);
}
devices_initialized_mask |= DEVICE_MASK_CUDA;
}
- foreach (DeviceInfo &info, cuda_devices) {
- devices.push_back(info);
+ if (mask & DEVICE_MASK_CUDA) {
+ foreach (DeviceInfo &info, cuda_devices) {
+ devices.push_back(info);
+ }
}
}
#endif
@@ -512,7 +514,7 @@ vector<DeviceInfo> Device::available_devices(uint mask)
if (mask & DEVICE_MASK_OPTIX) {
if (!(devices_initialized_mask & DEVICE_MASK_OPTIX)) {
if (device_optix_init()) {
- device_optix_info(optix_devices);
+ device_optix_info(cuda_devices, optix_devices);
}
devices_initialized_mask |= DEVICE_MASK_OPTIX;
}
diff --git a/intern/cycles/device/device_intern.h b/intern/cycles/device/device_intern.h
index 0c229ac24cf..94d63e8f333 100644
--- a/intern/cycles/device/device_intern.h
+++ b/intern/cycles/device/device_intern.h
@@ -45,7 +45,7 @@ Device *device_multi_create(DeviceInfo &info, Stats &stats, Profiler &profiler,
void device_cpu_info(vector<DeviceInfo> &devices);
void device_opencl_info(vector<DeviceInfo> &devices);
void device_cuda_info(vector<DeviceInfo> &devices);
-void device_optix_info(vector<DeviceInfo> &devices);
+void device_optix_info(const vector<DeviceInfo> &cuda_devices, vector<DeviceInfo> &devices);
void device_network_info(vector<DeviceInfo> &devices);
string device_cpu_capabilities();
diff --git a/intern/cycles/device/device_optix.cpp b/intern/cycles/device/device_optix.cpp
index 37d6ae3d041..e839d852127 100644
--- a/intern/cycles/device/device_optix.cpp
+++ b/intern/cycles/device/device_optix.cpp
@@ -1534,14 +1534,11 @@ bool device_optix_init()
return true;
}
-void device_optix_info(vector<DeviceInfo> &devices)
+void device_optix_info(const vector<DeviceInfo> &cuda_devices, vector<DeviceInfo> &devices)
{
// Simply add all supported CUDA devices as OptiX devices again
- vector<DeviceInfo> cuda_devices;
- device_cuda_info(cuda_devices);
-
- for (auto it = cuda_devices.begin(); it != cuda_devices.end();) {
- DeviceInfo &info = *it;
+ for (const DeviceInfo &cuda_info : cuda_devices) {
+ DeviceInfo info = cuda_info;
assert(info.type == DEVICE_CUDA);
info.type = DEVICE_OPTIX;
info.id += "_OptiX";
@@ -1564,13 +1561,10 @@ void device_optix_info(vector<DeviceInfo> &devices)
}
// Only add devices with RTX support
- if (rtcore_version == 0 && !getenv("CYCLES_OPTIX_TEST"))
- it = cuda_devices.erase(it);
- else
- ++it;
+ if (rtcore_version != 0 || getenv("CYCLES_OPTIX_TEST")) {
+ devices.push_back(info);
+ }
}
-
- devices.insert(devices.end(), cuda_devices.begin(), cuda_devices.end());
}
Device *device_optix_create(DeviceInfo &info, Stats &stats, Profiler &profiler, bool background)