[Bf-blender-cvs] [5fa7057] cycles_kernel_split: Cycles kernel split: Simplify OpenCL resources free

Sergey Sharybin noreply at git.blender.org
Fri May 8 22:08:31 CEST 2015


Commit: 5fa70572f69009293feaa34e7daf7205a2fe4c28
Author: Sergey Sharybin
Date:   Sat May 9 01:08:06 2015 +0500
Branches: cycles_kernel_split
https://developer.blender.org/rB5fa70572f69009293feaa34e7daf7205a2fe4c28

Cycles kernel split: Simplify OpenCL resources free

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

M	intern/cycles/device/device_opencl.cpp

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

diff --git a/intern/cycles/device/device_opencl.cpp b/intern/cycles/device/device_opencl.cpp
index 3113086..88989ad 100644
--- a/intern/cycles/device/device_opencl.cpp
+++ b/intern/cycles/device/device_opencl.cpp
@@ -1182,6 +1182,27 @@ protected:
 #undef FAKE_VARARG_HANDLE_ARG
 		return current_arg_index;
 	}
+
+	inline void release_kernel_safe(cl_kernel kernel)
+	{
+		if(kernel) {
+			clReleaseKernel(kernel);
+		}
+	}
+
+	inline void release_mem_object_safe(cl_mem mem)
+	{
+		if(mem != NULL) {
+			clReleaseMemObject(mem);
+		}
+	}
+
+	inline void release_program_safe(cl_program program)
+	{
+		if(program) {
+			clReleaseProgram(program);
+		}
+	}
 };
 
 class OpenCLDeviceMegaKernel : public OpenCLDeviceBase
@@ -1947,317 +1968,122 @@ public:
 		task_pool.stop();
 
 		/* Release kernels */
-		if(ckPathTraceKernel_DataInit)
-			clReleaseKernel(ckPathTraceKernel_DataInit);
-
-		if(ckPathTraceKernel_SceneIntersect)
-			clReleaseKernel(ckPathTraceKernel_SceneIntersect);
-
-		if(ckPathTraceKernel_LampEmission)
-			clReleaseKernel(ckPathTraceKernel_LampEmission);
-
-		if(ckPathTraceKernel_QueueEnqueue)
-			clReleaseKernel(ckPathTraceKernel_QueueEnqueue);
-
-		if(ckPathTraceKernel_BG_BufferUpdate)
-			clReleaseKernel(ckPathTraceKernel_BG_BufferUpdate);
-
-		if(ckPathTraceKernel_Shader_Lighting)
-			clReleaseKernel(ckPathTraceKernel_Shader_Lighting);
-
-		if(ckPathTraceKernel_Holdout_Emission_Blurring_Pathtermination_AO)
-			clReleaseKernel(ckPathTraceKernel_Holdout_Emission_Blurring_Pathtermination_AO);
-
-		if(ckPathTraceKernel_DirectLighting)
-			clReleaseKernel(ckPathTraceKernel_DirectLighting);
-
-		if(ckPathTraceKernel_ShadowBlocked_DirectLighting)
-			clReleaseKernel(ckPathTraceKernel_ShadowBlocked_DirectLighting);
-
-		if(ckPathTraceKernel_SetUpNextIteration)
-			clReleaseKernel(ckPathTraceKernel_SetUpNextIteration);
-
-		if(ckPathTraceKernel_SumAllRadiance)
-			clReleaseKernel(ckPathTraceKernel_SumAllRadiance);
+		release_kernel_safe(ckPathTraceKernel_DataInit);
+		release_kernel_safe(ckPathTraceKernel_SceneIntersect);
+		release_kernel_safe(ckPathTraceKernel_LampEmission);
+		release_kernel_safe(ckPathTraceKernel_QueueEnqueue);
+		release_kernel_safe(ckPathTraceKernel_BG_BufferUpdate);
+		release_kernel_safe(ckPathTraceKernel_Shader_Lighting);
+		release_kernel_safe(ckPathTraceKernel_Holdout_Emission_Blurring_Pathtermination_AO);
+		release_kernel_safe(ckPathTraceKernel_DirectLighting);
+		release_kernel_safe(ckPathTraceKernel_ShadowBlocked_DirectLighting);
+		release_kernel_safe(ckPathTraceKernel_SetUpNextIteration);
+		release_kernel_safe(ckPathTraceKernel_SumAllRadiance);
 
 		/* Release global memory */
-		if(P_sd != NULL)
-			clReleaseMemObject(P_sd);
-
-		if(P_sd_DL_shadow != NULL)
-			clReleaseMemObject(P_sd_DL_shadow);
-
-		if(N_sd != NULL)
-			clReleaseMemObject(N_sd);
-
-		if(N_sd_DL_shadow != NULL)
-			clReleaseMemObject(N_sd_DL_shadow);
-
-		if(Ng_sd != NULL)
-			clReleaseMemObject(Ng_sd);
-
-		if(Ng_sd_DL_shadow != NULL)
-			clReleaseMemObject(Ng_sd_DL_shadow);
-
-		if(I_sd != NULL)
-			clReleaseMemObject(I_sd);
-
-		if(I_sd_DL_shadow != NULL)
-			clReleaseMemObject(I_sd_DL_shadow);
-
-		if(shader_sd != NULL)
-			clReleaseMemObject(shader_sd);
-
-		if(shader_sd_DL_shadow != NULL)
-			clReleaseMemObject(shader_sd_DL_shadow);
-
-		if(flag_sd != NULL)
-			clReleaseMemObject(flag_sd);
-
-		if(flag_sd_DL_shadow != NULL)
-			clReleaseMemObject(flag_sd_DL_shadow);
-
-		if(prim_sd != NULL)
-			clReleaseMemObject(prim_sd);
-
-		if(prim_sd_DL_shadow != NULL)
-			clReleaseMemObject(prim_sd_DL_shadow);
-
-		if(type_sd != NULL)
-			clReleaseMemObject(type_sd);
-
-		if(type_sd_DL_shadow != NULL)
-			clReleaseMemObject(type_sd_DL_shadow);
-
-		if(u_sd != NULL)
-			clReleaseMemObject(u_sd);
-
-		if(u_sd_DL_shadow != NULL)
-			clReleaseMemObject(u_sd_DL_shadow);
-
-		if(v_sd != NULL)
-			clReleaseMemObject(v_sd);
-
-		if(v_sd_DL_shadow != NULL)
-			clReleaseMemObject(v_sd_DL_shadow);
-
-		if(object_sd != NULL)
-			clReleaseMemObject(object_sd);
-
-		if(object_sd_DL_shadow != NULL)
-			clReleaseMemObject(object_sd_DL_shadow);
-
-		if(time_sd != NULL)
-			clReleaseMemObject(time_sd);
-
-		if(time_sd_DL_shadow != NULL)
-			clReleaseMemObject(time_sd_DL_shadow);
-
-		if(ray_length_sd != NULL)
-			clReleaseMemObject(ray_length_sd);
-
-		if(ray_length_sd_DL_shadow != NULL)
-			clReleaseMemObject(ray_length_sd_DL_shadow);
-
-		if(ray_depth_sd != NULL)
-			clReleaseMemObject(ray_depth_sd);
-
-		if(ray_depth_sd_DL_shadow != NULL)
-			clReleaseMemObject(ray_depth_sd_DL_shadow);
-
-		if(transparent_depth_sd != NULL)
-			clReleaseMemObject(transparent_depth_sd);
-
-		if(transparent_depth_sd_DL_shadow != NULL)
-			clReleaseMemObject(transparent_depth_sd_DL_shadow);
-
+		release_mem_object_safe(P_sd);
+		release_mem_object_safe(P_sd_DL_shadow);
+		release_mem_object_safe(N_sd);
+		release_mem_object_safe(N_sd_DL_shadow);
+		release_mem_object_safe(Ng_sd);
+		release_mem_object_safe(Ng_sd_DL_shadow);
+		release_mem_object_safe(I_sd);
+		release_mem_object_safe(I_sd_DL_shadow);
+		release_mem_object_safe(shader_sd);
+		release_mem_object_safe(shader_sd_DL_shadow);
+		release_mem_object_safe(flag_sd);
+		release_mem_object_safe(flag_sd_DL_shadow);
+		release_mem_object_safe(prim_sd);
+		release_mem_object_safe(prim_sd_DL_shadow);
+		release_mem_object_safe(type_sd);
+		release_mem_object_safe(type_sd_DL_shadow);
+		release_mem_object_safe(u_sd);
+		release_mem_object_safe(u_sd_DL_shadow);
+		release_mem_object_safe(v_sd);
+		release_mem_object_safe(v_sd_DL_shadow);
+		release_mem_object_safe(object_sd);
+		release_mem_object_safe(object_sd_DL_shadow);
+		release_mem_object_safe(time_sd);
+		release_mem_object_safe(time_sd_DL_shadow);
+		release_mem_object_safe(ray_length_sd);
+		release_mem_object_safe(ray_length_sd_DL_shadow);
+		release_mem_object_safe(ray_depth_sd);
+		release_mem_object_safe(ray_depth_sd_DL_shadow);
+		release_mem_object_safe(transparent_depth_sd);
+		release_mem_object_safe(transparent_depth_sd_DL_shadow);
 #ifdef __RAY_DIFFERENTIALS__
-		if(dP_sd != NULL)
-			clReleaseMemObject(dP_sd);
-
-		if(dP_sd_DL_shadow != NULL)
-			clReleaseMemObject(dP_sd_DL_shadow);
-
-		if(dI_sd != NULL)
-			clReleaseMemObject(dI_sd);
-
-		if(dI_sd_DL_shadow != NULL)
-			clReleaseMemObject(dI_sd_DL_shadow);
-
-		if(du_sd != NULL)
-			clReleaseMemObject(du_sd);
-
-		if(du_sd_DL_shadow != NULL)
-			clReleaseMemObject(du_sd_DL_shadow);
-
-		if(dv_sd != NULL)
-			clReleaseMemObject(dv_sd);
-
-		if(dv_sd_DL_shadow != NULL)
-			clReleaseMemObject(dv_sd_DL_shadow);
+		release_mem_object_safe(dP_sd);
+		release_mem_object_safe(dP_sd_DL_shadow);
+		release_mem_object_safe(dI_sd);
+		release_mem_object_safe(dI_sd_DL_shadow);
+		release_mem_object_safe(du_sd);
+		release_mem_object_safe(du_sd_DL_shadow);
+		release_mem_object_safe(dv_sd);
+		release_mem_object_safe(dv_sd_DL_shadow);
 #endif
 #ifdef __DPDU__
-		if(dPdu_sd != NULL)
-			clReleaseMemObject(dPdu_sd);
-
-		if(dPdu_sd_DL_shadow != NULL)
-			clReleaseMemObject(dPdu_sd_DL_shadow);
-
-		if(dPdv_sd != NULL)
-			clReleaseMemObject(dPdv_sd);
-
-		if(dPdv_sd_DL_shadow != NULL)
-			clReleaseMemObject(dPdv_sd_DL_shadow);
+		release_mem_object_safe(dPdu_sd);
+		release_mem_object_safe(dPdu_sd_DL_shadow);
+		release_mem_object_safe(dPdv_sd);
+		release_mem_object_safe(dPdv_sd_DL_shadow);
 #endif
-
-		if(closure_sd != NULL)
-			clReleaseMemObject(closure_sd);
-
-		if(closure_sd_DL_shadow != NULL)
-			clReleaseMemObject(closure_sd_DL_shadow);
-
-		if(num_closure_sd != NULL)
-			clReleaseMemObject(num_closure_sd);
-
-		if(num_closure_sd_DL_shadow != NULL)
-			clReleaseMemObject(num_closure_sd_DL_shadow);
-
-		if(randb_closure_sd != NULL)
-			clReleaseMemObject(randb_closure_sd);
-
-		if(randb_closure_sd_DL_shadow != NULL)
-			clReleaseMemObject(randb_closure_sd_DL_shadow);
-
-		if(ray_P_sd != NULL)
-			clReleaseMemObject(ray_P_sd);
-
-		if(ray_P_sd_DL_shadow != NULL)
-			clReleaseMemObject(ray_P_sd_DL_shadow);
-
-		if(ray_dP_sd != NULL)
-			clReleaseMemObject(ray_dP_sd);
-
-		if(ray_dP_sd_DL_shadow != NULL)
-			clReleaseMemObject(ray_dP_sd_DL_shadow);
-
-		if(rng_coop != NULL)
-			clReleaseMemObject(rng_coop);
-
-		if(throughput_coop != NULL)
-			clReleaseMemObject(throughput_coop);
-
-		if(L_transparent_coop != NULL)
-			clReleaseMemObject(L_transparent_coop);
-
-		if(PathRadiance_coop != NULL)
-			clReleaseMemObject(PathRadiance_coop);
-
-		if(Ray_coop != NULL)
-			clReleaseMemObject(Ray_coop);
-
-		if(PathState_coop != NULL)
-			clReleaseMemObject(PathState_coop);
-
-		if(Intersection_coop != NULL)
-			clReleaseMemObject(Intersection_coop);
-
-		if(kgbuffer != NULL)
-			clReleaseMemObject(kgbuffer);
-
-		if(sd != NULL)
-			clReleaseMemObject(sd);
-
-		if(sd_DL_shadow != NULL)
-			clReleaseMemObject(sd_DL_shadow);
-
-		if(ray_state != NULL)
-			clReleaseMemObject(ray_state);
-
-		if(AOAlpha_coop != NULL)
-			clReleaseMemObject(AOAlpha_coop);
-
-		if(AOBSDF_coop != NULL)
-			clReleaseMemObject(AOBSDF_coop);
-
-		if(AOLightRay_coop != NULL)
-			clReleaseMemObject(AOLightRay_coop);
-
-		if(BSDFEval_coop != NULL)
-			clReleaseMemObject(BSDFEval_coop);
-
-		if(ISLamp_coop != NULL)
-			clReleaseMemObject(ISLamp_coop);
-
-		if(LightRay_coop != NULL)
-			clReleaseMemObject(LightRay_coop);
-
-		if(Intersection_coop_AO != NULL)
-			clReleaseMemObject(Intersection_coop_AO);
-
-		if(Intersection_coop_DL != NULL)
-			clReleaseMemObject(Intersection_coop_DL);
-
+		release_mem_object_safe(closure_sd);
+		release_mem_object_safe(closure_sd_DL_shadow);
+		release_mem_object_safe(num_closure_sd);
+		release_mem_object_safe(num_closure_sd_DL_shadow);
+		release_mem_object_safe(randb_closure_sd);
+		release_mem_object_safe(randb_closure_sd_DL_shadow);
+		release_mem_object_safe(ray_P_sd);
+		release_mem_object_safe(ray_P_sd_DL_shadow);
+		release_mem_object_safe(ray_dP_sd);
+		release_mem_object_safe(ray_dP_sd_DL_shadow);
+		release_mem_object_safe(rng_coop);
+		release_mem_object_safe(throughput_coop);
+		release_mem_object_safe(L_transparent_coop);
+		release_mem_object_safe(PathRadiance_coop);
+		release_mem_object_safe(Ray_coop);
+		release_mem_object_safe(PathState_coop);
+		release_mem_object_safe(Intersection_coop);
+		release_mem_object_sa

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list