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);
|
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();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user