Cycles: Move build options constructions to DeviceRequestedFeatures

This way it's easier to re-use requested features logic across multiple
device implementations.
This commit is contained in:
Sergey Sharybin 2015-11-21 21:42:31 +05:00
parent 9aafec1ce1
commit a106da7f1d
2 changed files with 30 additions and 30 deletions

@ -125,6 +125,34 @@ public:
use_baking == requested_features.use_baking); use_baking == requested_features.use_baking);
} }
/* Convert the requested features structure to a build options,
* which could then be passed to compilers.
*/
string get_build_options(void) const
{
string build_options = "";
if(experimental) {
build_options += "-D__KERNEL_EXPERIMENTAL__ ";
}
build_options += "-D__NODES_MAX_GROUP__=" +
string_printf("%d", max_nodes_group);
build_options += " -D__NODES_FEATURES__=" +
string_printf("%d", nodes_features);
build_options += string_printf(" -D__MAX_CLOSURE__=%d", max_closure);
if(!use_hair) {
build_options += " -D__NO_HAIR__";
}
if(!use_object_motion) {
build_options += " -D__NO_OBJECT_MOTION__";
}
if(!use_camera_motion) {
build_options += " -D__NO_CAMERA_MOTION__";
}
if(!use_baking) {
build_options += " -D__NO_BAKING__";
}
return build_options;
}
}; };
std::ostream& operator <<(std::ostream &os, std::ostream& operator <<(std::ostream &os,

@ -1550,34 +1550,6 @@ protected:
} }
} }
string build_options_from_requested_features(
const DeviceRequestedFeatures& requested_features)
{
string build_options = "";
if(requested_features.experimental) {
build_options += "-D__KERNEL_EXPERIMENTAL__ ";
}
build_options += "-D__NODES_MAX_GROUP__=" +
string_printf("%d", requested_features.max_nodes_group);
build_options += " -D__NODES_FEATURES__=" +
string_printf("%d", requested_features.nodes_features);
build_options += string_printf(" -D__MAX_CLOSURE__=%d",
requested_features.max_closure);
if(!requested_features.use_hair) {
build_options += " -D__NO_HAIR__";
}
if(!requested_features.use_object_motion) {
build_options += " -D__NO_OBJECT_MOTION__";
}
if(!requested_features.use_camera_motion) {
build_options += " -D__NO_CAMERA_MOTION__";
}
if(!requested_features.use_baking) {
build_options += " -D__NO_BAKING__";
}
return build_options;
}
/* ** Those guys are for workign around some compiler-specific bugs ** */ /* ** Those guys are for workign around some compiler-specific bugs ** */
virtual cl_program load_cached_kernel( virtual cl_program load_cached_kernel(
@ -2312,7 +2284,7 @@ public:
#ifdef __WORK_STEALING__ #ifdef __WORK_STEALING__
build_options += " -D__WORK_STEALING__"; build_options += " -D__WORK_STEALING__";
#endif #endif
build_options += build_options_from_requested_features(requested_features); build_options += requested_features.get_build_options();
/* Set compute device build option. */ /* Set compute device build option. */
cl_device_type device_type; cl_device_type device_type;
@ -3585,7 +3557,7 @@ protected:
string build_options_for_base_program( string build_options_for_base_program(
const DeviceRequestedFeatures& requested_features) const DeviceRequestedFeatures& requested_features)
{ {
return build_options_from_requested_features(requested_features); return requested_features.get_build_options();
} }
}; };