[Bf-blender-cvs] [28d2f69] cycles_kernel_split: Cycles kernel split: Simplify code around loading split kernels

Sergey Sharybin noreply at git.blender.org
Fri May 8 18:20:00 CEST 2015


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;




More information about the Bf-blender-cvs mailing list