Commit: 28d2f699514d702c3beaba87e0ab9abd60b82437
Author: Sergey Sharybin
Date:   Fri May 8 21:18:24 2015 +0500
Branches: cycles_kernel_split
https://developer.blender.org/rB28d2f699514d702c3beaba87e0ab9abd60b82437

Cycles kernel split: Simplify code around loading split kernels

===================================================================

M       intern/cycles/device/device_opencl.cpp

===================================================================

diff --git a/intern/cycles/device/device_opencl.cpp 
b/intern/cycles/device/device_opencl.cpp
index 2ba696f..3327d95 100644
--- a/intern/cycles/device/device_opencl.cpp
+++ b/intern/cycles/device/device_opencl.cpp
@@ -1782,82 +1782,35 @@ public:
                common_custom_build_options += "-D__WORK_STEALING__ ";
 #endif
 
-               kernel_init_source = "#include \"kernel_DataInit.cl\" // " + 
kernel_md5 + "\n";
-               custom_kernel_build_options = common_custom_build_options;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = string_printf("cycles_kernel_%s_%s_DataInit.clbin", 
device_md5.c_str(), kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &dataInit_program))
-                       return false;
-
-               kernel_init_source = "#include \"kernel_SceneIntersect.cl\" // 
" + kernel_md5 + "\n";
-               custom_kernel_build_options = common_custom_build_options;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = 
string_printf("cycles_kernel_%s_%s_SceneIntersect.clbin", device_md5.c_str(), 
kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &sceneIntersect_program))
-                       return false;
-
-               kernel_init_source = "#include \"kernel_LampEmission.cl\" // " 
+ kernel_md5 + "\n";
-               custom_kernel_build_options = common_custom_build_options + 
svm_build_options;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = string_printf("cycles_kernel_%s_%s_LampEmission.clbin", 
device_md5.c_str(), kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &lampEmission_program))
-                       return false;
-
-               kernel_init_source = "#include \"kernel_QueueEnqueue.cl\" // " 
+ kernel_md5 + "\n";
-               custom_kernel_build_options = common_custom_build_options;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = string_printf("cycles_kernel_%s_%s_QueueEnqueue.clbin", 
device_md5.c_str(), kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &QueueEnqueue_program))
-                       return false;
-
-               kernel_init_source = "#include 
\"kernel_Background_BufferUpdate.cl\" // " + kernel_md5 + "\n";
-               custom_kernel_build_options = common_custom_build_options + 
compute_device_type_build_option + svm_build_options;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = 
string_printf("cycles_kernel_%s_%s_Background_BufferUpdate.clbin", 
device_md5.c_str(), kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &background_BufferUpdate_program))
-                       return false;
-
-               kernel_init_source = "#include \"kernel_ShaderEval.cl\" // " + 
kernel_md5 + "\n";
-               custom_kernel_build_options = common_custom_build_options + 
svm_build_options;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = string_printf("cycles_kernel_%s_%s_ShaderEval.clbin", 
device_md5.c_str(), kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &shaderEval_program))
-                       return false;
-
-               kernel_init_source = "#include 
\"kernel_Holdout_Emission_Blurring_Pathtermination_AO.cl\" // " + kernel_md5 + 
"\n";
-               custom_kernel_build_options = common_custom_build_options + 
compute_device_type_build_option;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = 
string_printf("cycles_kernel_%s_%s_Holdout_Emission_Blurring_Pathtermination_AO.clbin",
 device_md5.c_str(), kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &holdout_emission_blurring_termination_ao_program))
-                       return false;
-
-               kernel_init_source = "#include \"kernel_DirectLighting.cl\" // 
" + kernel_md5 + "\n";
-               custom_kernel_build_options = common_custom_build_options + 
compute_device_type_build_option + svm_build_options;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = 
string_printf("cycles_kernel_%s_%s_DirectLighting.clbin", device_md5.c_str(), 
kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &directLighting_program))
-                       return false;
-
-               kernel_init_source = "#include \"kernel_ShadowBlocked.cl\" // " 
+ kernel_md5 + "\n";
-               custom_kernel_build_options = common_custom_build_options + 
svm_build_options;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = 
string_printf("cycles_kernel_%s_%s_ShadowBlocked.clbin", device_md5.c_str(), 
kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &shadowBlocked_program))
-                       return false;
-
-               kernel_init_source = "#include \"kernel_NextIterationSetUp.cl\" 
// " + kernel_md5 + "\n";
-               custom_kernel_build_options = common_custom_build_options + 
compute_device_type_build_option;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = 
string_printf("cycles_kernel_%s_%s_NextIterationSetUp.clbin", 
device_md5.c_str(), kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &nextIterationSetUp_program))
-                       return false;
-
-               kernel_init_source = "#include \"kernel_SumAllRadiance.cl\" // 
" + kernel_md5 + "\n";
-               custom_kernel_build_options = common_custom_build_options;
-               device_md5 = device_md5_hash(custom_kernel_build_options);
-               clbin = 
string_printf("cycles_kernel_%s_%s_SumAllRadiance.clbin", device_md5.c_str(), 
kernel_md5.c_str());
-               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, 
custom_kernel_build_options, &sumAllRadiance_program))
-                       return false;
+#define LOAD_KERNEL(program, name) \
+       do { \
+               kernel_init_source = "#include \"kernel_" name ".cl\" // " + \
+                                    kernel_md5 + "\n"; \
+               custom_kernel_build_options = common_custom_build_options; \
+               device_md5 = device_md5_hash(custom_kernel_build_options); \
+               clbin = string_printf("cycles_kernel_%s_%s_" name ".clbin", \
+                                     device_md5.c_str(), kernel_md5.c_str()); \
+               if(!load_split_kernel(kernel_path, kernel_init_source, clbin, \
+                                     custom_kernel_build_options, &program)) \
+               { \
+                       return false; \
+               } \
+       } while(false)
+
+               LOAD_KERNEL(dataInit_program, "DataInit");
+               LOAD_KERNEL(sceneIntersect_program, "SceneIntersect");
+               LOAD_KERNEL(lampEmission_program, "LampEmission");
+               LOAD_KERNEL(QueueEnqueue_program, "QueueEnqueue");
+               LOAD_KERNEL(background_BufferUpdate_program, 
"Background_BufferUpdate");
+               LOAD_KERNEL(shaderEval_program, "ShaderEval");
+               LOAD_KERNEL(holdout_emission_blurring_termination_ao_program,
+                           "Holdout_Emission_Blurring_Pathtermination_AO");
+               LOAD_KERNEL(directLighting_program, "DirectLighting");
+               LOAD_KERNEL(shadowBlocked_program, "ShadowBlocked");
+               LOAD_KERNEL(nextIterationSetUp_program, "NextIterationSetUp");
+               LOAD_KERNEL(sumAllRadiance_program, "SumAllRadiance");
+
+#undef LOAD_KERNEL
 
                current_clos_max = max_closure;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to