Cycles: Log requested device features

Useful to have this always logged because otherwise it's needed to remove cached
kernels and check build flags to see which features are enabled.
This commit is contained in:
Sergey Sharybin 2015-07-18 16:00:07 +02:00
parent 45b5bf034b
commit cf14437ac9
3 changed files with 31 additions and 1 deletions

@ -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()

@ -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 {

@ -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";