From 2ebaa6967675a201637dae26c5c67d1b5f8c3f26 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 6 Jun 2015 15:33:37 +0200 Subject: Cycles: Move requested feature conversion to an own function This way it could be used for the shader/baking kernels easily n the future. making those kernels more optimal. --- intern/cycles/device/device_opencl.cpp | 51 ++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/intern/cycles/device/device_opencl.cpp b/intern/cycles/device/device_opencl.cpp index 693bb1956bd..87c08b3e045 100644 --- a/intern/cycles/device/device_opencl.cpp +++ b/intern/cycles/device/device_opencl.cpp @@ -1262,6 +1262,31 @@ protected: clReleaseProgram(program); } } + + 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__"; + } + return build_options; + } }; class OpenCLDeviceMegaKernel : public OpenCLDeviceBase @@ -1951,37 +1976,15 @@ public: string kernel_path = path_get("kernel"); string kernel_md5 = path_files_md5_hash(kernel_path); string device_md5; - string build_options; string kernel_init_source; string clbin; string clsrc, *debug_src = NULL; - build_options += "-D__SPLIT_KERNEL__"; + string build_options = "-D__SPLIT_KERNEL__"; #ifdef __WORK_STEALING__ build_options += " -D__WORK_STEALING__"; #endif - - /* TODO(sergey): Make it a separate function to convert requested - * features to build flags in order to make code a bit cleaner. - */ - 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__"; - } + build_options += build_options_from_requested_features(requested_features); /* Set compute device build option. */ cl_device_type device_type; -- cgit v1.2.3