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. @@

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

Reply via email to