[Bf-blender-cvs] [8491e4ab863] master: Fix unreported: Cycles CLI device override doesn't set peer memory usage flag

Lukas Stockner noreply at git.blender.org
Fri Dec 25 23:13:39 CET 2020


Commit: 8491e4ab8636a90120f94bede047d591c3ca21cc
Author: Lukas Stockner
Date:   Wed Dec 23 21:21:20 2020 +0100
Branches: master
https://developer.blender.org/rB8491e4ab8636a90120f94bede047d591c3ca21cc

Fix unreported: Cycles CLI device override doesn't set peer memory usage flag

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D9929

===================================================================

M	intern/cycles/blender/blender_device.cpp

===================================================================

diff --git a/intern/cycles/blender/blender_device.cpp b/intern/cycles/blender/blender_device.cpp
index 977f8297de1..07c99ca0228 100644
--- a/intern/cycles/blender/blender_device.cpp
+++ b/intern/cycles/blender/blender_device.cpp
@@ -43,42 +43,41 @@ int blender_device_threads(BL::Scene &b_scene)
 
 DeviceInfo blender_device_info(BL::Preferences &b_preferences, BL::Scene &b_scene, bool background)
 {
-  if (BlenderSession::device_override != DEVICE_MASK_ALL) {
-    vector<DeviceInfo> devices = Device::available_devices(BlenderSession::device_override);
+  PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
 
-    if (devices.empty()) {
-      return Device::dummy_device("Found no Cycles device of the specified type");
+  /* Find cycles preferences. */
+  PointerRNA cpreferences;
+  BL::Preferences::addons_iterator b_addon_iter;
+  for (b_preferences.addons.begin(b_addon_iter); b_addon_iter != b_preferences.addons.end();
+        ++b_addon_iter) {
+    if (b_addon_iter->module() == "cycles") {
+      cpreferences = b_addon_iter->preferences().ptr;
+      break;
     }
-
-    int threads = blender_device_threads(b_scene);
-    return Device::get_multi_device(devices, threads, background);
   }
 
-  PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
-
   /* Default to CPU device. */
   DeviceInfo device = Device::available_devices(DEVICE_MASK_CPU).front();
 
-  if (get_enum(cscene, "device") == 2) {
+  if (BlenderSession::device_override != DEVICE_MASK_ALL) {
+    vector<DeviceInfo> devices = Device::available_devices(BlenderSession::device_override);
+
+    if (devices.empty()) {
+      device = Device::dummy_device("Found no Cycles device of the specified type");
+    }
+    else {
+      int threads = blender_device_threads(b_scene);
+      device = Device::get_multi_device(devices, threads, background);
+    }
+  }
+  else if (get_enum(cscene, "device") == 2) {
     /* Find network device. */
     vector<DeviceInfo> devices = Device::available_devices(DEVICE_MASK_NETWORK);
     if (!devices.empty()) {
-      return devices.front();
+      device = devices.front();
     }
   }
   else if (get_enum(cscene, "device") == 1) {
-    /* Find cycles preferences. */
-    PointerRNA cpreferences;
-
-    BL::Preferences::addons_iterator b_addon_iter;
-    for (b_preferences.addons.begin(b_addon_iter); b_addon_iter != b_preferences.addons.end();
-         ++b_addon_iter) {
-      if (b_addon_iter->module() == "cycles") {
-        cpreferences = b_addon_iter->preferences().ptr;
-        break;
-      }
-    }
-
     /* Test if we are using GPU devices. */
     ComputeDevice compute_device = (ComputeDevice)get_enum(
         cpreferences, "compute_device_type", COMPUTE_DEVICE_NUM, COMPUTE_DEVICE_CPU);
@@ -117,13 +116,13 @@ DeviceInfo blender_device_info(BL::Preferences &b_preferences, BL::Scene &b_scen
         device = Device::get_multi_device(used_devices, threads, background);
       }
       /* Else keep using the CPU device that was set before. */
-
-      if (!get_boolean(cpreferences, "peer_memory")) {
-        device.has_peer_memory = false;
-      }
     }
   }
 
+  if (!get_boolean(cpreferences, "peer_memory")) {
+    device.has_peer_memory = false;
+  }
+
   return device;
 }



More information about the Bf-blender-cvs mailing list