forked from bartvdbraak/blender
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:
parent
9aafec1ce1
commit
a106da7f1d
@ -125,6 +125,34 @@ public:
|
||||
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,
|
||||
|
@ -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 ** */
|
||||
|
||||
virtual cl_program load_cached_kernel(
|
||||
@ -2312,7 +2284,7 @@ public:
|
||||
#ifdef __WORK_STEALING__
|
||||
build_options += " -D__WORK_STEALING__";
|
||||
#endif
|
||||
build_options += build_options_from_requested_features(requested_features);
|
||||
build_options += requested_features.get_build_options();
|
||||
|
||||
/* Set compute device build option. */
|
||||
cl_device_type device_type;
|
||||
@ -3585,7 +3557,7 @@ protected:
|
||||
string build_options_for_base_program(
|
||||
const DeviceRequestedFeatures& requested_features)
|
||||
{
|
||||
return build_options_from_requested_features(requested_features);
|
||||
return requested_features.get_build_options();
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user