diff --git a/intern/cycles/device/device.cpp b/intern/cycles/device/device.cpp index 5cad8e1b49c..fc9959e0b48 100644 --- a/intern/cycles/device/device.cpp +++ b/intern/cycles/device/device.cpp @@ -31,6 +31,29 @@ CCL_NAMESPACE_BEGIN +/* Device Requested Features */ + +std::ostream& operator <<(std::ostream &os, + const DeviceRequestedFeatures& requested_features) +{ + os << "Experimental features: " + << (requested_features.experimental ? "On" : "Off") << std::endl; + os << "Max closure count: " << requested_features.max_closure << std::endl; + os << "Max nodes group: " << requested_features.max_nodes_group << std::endl; + /* TODO(sergey): Decode bitflag into list of names. */ + os << "Nodes features: " << requested_features.nodes_features << std::endl; + /* TODO(sergey): Make it utility function to convert bool to string. */ + os << "Use hair: " + << (requested_features.use_hair ? "True" : "False") << std::endl; + os << "Use object motion: " + << (requested_features.use_object_motion ? "True" : "False") << std::endl; + os << "Use camera motion: " + << (requested_features.use_camera_motion ? "True" : "False") << std::endl; + os << "Use Baking: " + << (requested_features.use_baking ? "True" : "False") << std::endl; + return os; +} + /* Device */ Device::~Device() diff --git a/intern/cycles/device/device.h b/intern/cycles/device/device.h index 7c4f5b61a48..ea1e20d1500 100644 --- a/intern/cycles/device/device.h +++ b/intern/cycles/device/device.h @@ -124,8 +124,12 @@ public: use_camera_motion == requested_features.use_camera_motion && use_baking == requested_features.use_baking); } + }; +std::ostream& operator <<(std::ostream &os, + const DeviceRequestedFeatures& requested_features); + /* Device */ struct DeviceDrawParams { diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index f3acebd33d5..837c2694894 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -30,6 +30,7 @@ #include "util_foreach.h" #include "util_function.h" +#include "util_logging.h" #include "util_math.h" #include "util_opengl.h" #include "util_task.h" @@ -650,7 +651,9 @@ void Session::load_kernels() if(!kernels_loaded) { progress.set_status("Loading render kernels (may take a few minutes the first time)"); - if(!device->load_kernels(get_requested_device_features())) { + DeviceRequestedFeatures requested_features = get_requested_device_features(); + VLOG(2) << "Requested features:\n" << requested_features; + if(!device->load_kernels(requested_features)) { string message = device->error_message(); if(message.empty()) message = "Failed loading render kernel, see console for errors";