Commit: e93ee697a94bc5880b351ed5b1ca97fd60a3165c
Author: Kavitha Sampath
Date:   Fri Apr 10 18:30:45 2015 +0530
Branches: cycles_kernel_split
https://developer.blender.org/rBe93ee697a94bc5880b351ed5b1ca97fd60a3165c

[BCYCLES-209] make direct lighting and shadow blocked kernels share shaderData 
global buffers

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

M       intern/cycles/device/device_opencl.cpp
M       intern/cycles/kernel/kernel_DataInit.cl

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

diff --git a/intern/cycles/device/device_opencl.cpp 
b/intern/cycles/device/device_opencl.cpp
index d9bfdd2..b6fd5a0 100644
--- a/intern/cycles/device/device_opencl.cpp
+++ b/intern/cycles/device/device_opencl.cpp
@@ -411,8 +411,7 @@ public:
 
        /* global buffers for ShaderData */
        cl_mem sd;                      /* ShaderData used in the main 
path-iteration loop */
-       cl_mem sd_dl;                   /* ShaderData used in DirectLighting 
kernel */
-       cl_mem sd_shadow;               /* ShaderData used in ShadowBlocked 
kernel */
+       cl_mem sd_DL_shadow;            /* ShaderData used in Direct Lighting 
and ShadowBlocked kernel */
 
        /* global buffers of each member of ShaderData */
        cl_mem P_sd;
@@ -674,8 +673,7 @@ public:
                /* Initialize cl_mem variables */
                kgbuffer = NULL;
                sd = NULL;
-               sd_dl = NULL;
-               sd_shadow = NULL;
+               sd_DL_shadow = NULL;
 
                P_sd = NULL;
                P_sd_dl = NULL;;
@@ -2164,11 +2162,8 @@ public:
                if(sd != NULL)
                        clReleaseMemObject(sd);
 
-               if(sd_dl != NULL)
-                       clReleaseMemObject(sd_dl);
-
-               if(sd_shadow != NULL)
-                       clReleaseMemObject(sd_shadow);
+               if(sd_DL_shadow != NULL)
+                       clReleaseMemObject(sd_DL_shadow);
 
                if(ray_state != NULL)
                        clReleaseMemObject(ray_state);
@@ -2499,11 +2494,8 @@ public:
                        sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, 
get_shaderdata_soa_size(), NULL, &ciErr);
                        assert(ciErr == CL_SUCCESS && "Can't create Shaderdata 
memory");
 
-                       sd_dl = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, 
get_shaderdata_soa_size(), NULL, &ciErr);
-                       assert(ciErr == CL_SUCCESS && "Can't create sd_dl 
memory");
-
-                       sd_shadow = clCreateBuffer(cxContext, 
CL_MEM_READ_WRITE, get_shaderdata_soa_size(), NULL, &ciErr);
-                       assert(ciErr == CL_SUCCESS && "Can't create sd_shadow 
memory");
+                       sd_DL_shadow = clCreateBuffer(cxContext, 
CL_MEM_READ_WRITE, get_shaderdata_soa_size(), NULL, &ciErr);
+                       assert(ciErr == CL_SUCCESS && "Can't create 
sd_DL_shadow memory");
 
                        P_sd = clCreateBuffer(cxContext, CL_MEM_READ_WRITE, 
num_global_elements * sizeof(float3), NULL, &ciErr);
                        assert(ciErr == CL_SUCCESS && "Can't create P_sd 
memory");
@@ -2811,8 +2803,7 @@ public:
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DataInit_SPLIT_KERNEL, narg++, 
sizeof(kgbuffer), (void*)&kgbuffer));
 
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DataInit_SPLIT_KERNEL, narg++, 
sizeof(sd), (void*)&sd));
-               
opencl_assert(clSetKernelArg(ckPathTraceKernel_DataInit_SPLIT_KERNEL, narg++, 
sizeof(sd_dl), (void*)&sd_dl));
-               
opencl_assert(clSetKernelArg(ckPathTraceKernel_DataInit_SPLIT_KERNEL, narg++, 
sizeof(sd_shadow), (void*)&sd_shadow));
+               
opencl_assert(clSetKernelArg(ckPathTraceKernel_DataInit_SPLIT_KERNEL, narg++, 
sizeof(sd_DL_shadow), (void*)&sd_DL_shadow));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DataInit_SPLIT_KERNEL, narg++, 
sizeof(P_sd), (void*)&P_sd));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DataInit_SPLIT_KERNEL, narg++, 
sizeof(P_sd_dl), (void*)&P_sd_dl));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DataInit_SPLIT_KERNEL, narg++, 
sizeof(P_sd_shadow), (void*)&P_sd_shadow));
@@ -3103,7 +3094,7 @@ public:
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DirectLighting_SPLIT_KERNEL, 
narg++, sizeof(kgbuffer), (void*)&kgbuffer));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DirectLighting_SPLIT_KERNEL, 
narg++, sizeof(d_data), (void*)&d_data));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DirectLighting_SPLIT_KERNEL, 
narg++, sizeof(sd), (void*)&sd));
-               
opencl_assert(clSetKernelArg(ckPathTraceKernel_DirectLighting_SPLIT_KERNEL, 
narg++, sizeof(sd_dl), (void*)&sd_dl));
+               
opencl_assert(clSetKernelArg(ckPathTraceKernel_DirectLighting_SPLIT_KERNEL, 
narg++, sizeof(sd_DL_shadow), (void*)&sd_DL_shadow));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DirectLighting_SPLIT_KERNEL, 
narg++, sizeof(rng_coop), (void*)&rng_coop));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DirectLighting_SPLIT_KERNEL, 
narg++, sizeof(PathState_coop), (void*)&PathState_coop));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_DirectLighting_SPLIT_KERNEL, 
narg++, sizeof(ISLamp_coop), (void*)&ISLamp_coop));
@@ -3119,7 +3110,7 @@ public:
                narg = 0;
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_ShadowBlocked_DirectLighting_SPLIT_KERNEL,
 narg++, sizeof(kgbuffer), (void*)&kgbuffer));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_ShadowBlocked_DirectLighting_SPLIT_KERNEL,
 narg++, sizeof(d_data), (void*)&d_data));
-               
opencl_assert(clSetKernelArg(ckPathTraceKernel_ShadowBlocked_DirectLighting_SPLIT_KERNEL,
 narg++, sizeof(sd_shadow), (void*)&sd_shadow));
+               
opencl_assert(clSetKernelArg(ckPathTraceKernel_ShadowBlocked_DirectLighting_SPLIT_KERNEL,
 narg++, sizeof(sd_DL_shadow), (void*)&sd_DL_shadow));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_ShadowBlocked_DirectLighting_SPLIT_KERNEL,
 narg++, sizeof(PathState_coop), (void*)&PathState_coop));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_ShadowBlocked_DirectLighting_SPLIT_KERNEL,
 narg++, sizeof(LightRay_coop), (void*)&LightRay_coop));
                
opencl_assert(clSetKernelArg(ckPathTraceKernel_ShadowBlocked_DirectLighting_SPLIT_KERNEL,
 narg++, sizeof(AOLightRay_coop), (void*)&AOLightRay_coop));
@@ -3394,8 +3385,7 @@ public:
                total_invariable_mem_allocated += NUM_QUEUES * sizeof(unsigned 
int); /* Queue index size */
                total_invariable_mem_allocated += sizeof(char); /* 
use_queues_flag size */
                total_invariable_mem_allocated += ShaderData_SOA_size; /* sd 
size */
-               total_invariable_mem_allocated += ShaderData_SOA_size; /* sd_dl 
size */
-               total_invariable_mem_allocated += ShaderData_SOA_size; /* 
sd_shadow size */
+               total_invariable_mem_allocated += ShaderData_SOA_size; /* 
sd_DL_shadow size */
 
                return total_invariable_mem_allocated;
        }
@@ -3458,7 +3448,6 @@ public:
                        + Intersection_coop_AO_size          /* 
Instersection_coop_AO */
                        + Intersection_coop_DL_size          /* Intersection 
coop DL */
                        + shaderdata_volume       /* Overall ShaderData */
-                       + shaderdata_volume       /* ShaderData_coop_DL */
                        + (shaderdata_volume * 2) /* ShaderData coop shadow */
                        + LightRay_size + BSDFEval_size + AOAlpha_size + 
AOBSDF_size + AOLightRay_size
                        + (sizeof(int)* NUM_QUEUES)
diff --git a/intern/cycles/kernel/kernel_DataInit.cl 
b/intern/cycles/kernel/kernel_DataInit.cl
index 7964f9c..a6fbaf3 100644
--- a/intern/cycles/kernel/kernel_DataInit.cl
+++ b/intern/cycles/kernel/kernel_DataInit.cl
@@ -80,7 +80,6 @@ ccl_device_inline void 
kernel_path_trace_setup_SPLIT_KERNEL(__ADDR_SPACE__ Kerne
 __kernel void kernel_ocl_path_trace_data_initialization_SPLIT_KERNEL(
        ccl_global char *globals,
        ccl_global char *shader_data_sd,                  /* Arguments related 
to ShaderData */
-       ccl_global char *shader_data_sd_dl,             /* Arguments related to 
ShaderData */
        ccl_global char *shader_data_sd_shadow,     /* Arguments related to 
ShaderData */
 
        ccl_global float3 *P_sd,
@@ -230,114 +229,87 @@ __kernel void 
kernel_ocl_path_trace_data_initialization_SPLIT_KERNEL(
 
        /* Load ShaderData structure */
        ccl_global ShaderData *sd = (ccl_global ShaderData *)shader_data_sd;
-       ccl_global ShaderData *sd_dl = (ccl_global ShaderData 
*)shader_data_sd_dl;
        ccl_global ShaderData *sd_shadow = (ccl_global ShaderData 
*)shader_data_sd_shadow;
 
        sd->P = P_sd;
-       sd_dl->P = P_sd_dl;
        sd_shadow->P = P_sd_shadow;
 
        sd->N = N_sd;
-       sd_dl->N = N_sd_dl;
        sd_shadow->N = N_sd_shadow;
 
        sd->Ng = Ng_sd;
-       sd_dl->Ng = Ng_sd_dl;
        sd_shadow->Ng = Ng_sd_shadow;
 
        sd->I = I_sd;
-       sd_dl->I = I_sd_dl;
        sd_shadow->I = I_sd_shadow;
 
        sd->shader = shader_sd;
-       sd_dl->shader = shader_sd_dl;
        sd_shadow->shader = shader_sd_shadow;
 
        sd->flag = flag_sd;
-       sd_dl->flag = flag_sd_dl;
        sd_shadow->flag = flag_sd_shadow;
 
        sd->prim = prim_sd;
-       sd_dl->prim = prim_sd_dl;
        sd_shadow->prim = prim_sd_shadow;
 
        sd->type = type_sd;
-       sd_dl->type = type_sd_dl;
        sd_shadow->type = type_sd_shadow;
 
        sd->u = u_sd;
-       sd_dl->u = u_sd_dl;
        sd_shadow->u = u_sd_shadow;
 
        sd->v = v_sd;
-       sd_dl->v = v_sd_dl;
        sd_shadow->v = v_sd_shadow;
 
        sd->object = object_sd;
-       sd_dl->object = object_sd_dl;
        sd_shadow->object = object_sd_shadow;
 
        sd->time = time_sd;
-       sd_dl->time = time_sd_dl;
        sd_shadow->time = time_sd_shadow;
 
        sd->ray_length = ray_length_sd;
-       sd_dl->ray_length = ray_length_sd_dl;
        sd_shadow->ray_length = ray_length_sd_shadow;
 
        sd->ray_depth = ray_depth_sd;
-       sd_dl->ray_depth = ray_depth_sd_dl;
        sd_shadow->ray_depth = ray_depth_sd_shadow;
 
        sd->transparent_depth = transparent_depth_sd;
-       sd_dl->transparent_depth = transparent_depth_sd_dl;
        sd_shadow->transparent_depth = transparent_depth_sd_shadow;
 
        #ifdef __RAY_DIFFERENTIALS__
        sd->dP = dP_sd;
-       sd_dl->dP = dP_sd_dl;
        sd_shadow->dP = dP_sd_shadow;
 
        sd->dI = dI_sd;
-       sd_dl->dI = dI_sd_dl;
        sd_shadow->dI = dI_sd_shadow;
 
        sd->du = du_sd;
-       sd_dl->du = du_sd_dl;
        sd_shadow->du = du_sd_shadow;
 
        sd->dv = dv_sd;
-       sd_dl->dv = dv_sd_dl;
        sd_shadow->dv = dv_sd_shadow;
        #ifdef __DPDU__
        sd->dPdu = dPdu_sd;
-       sd_dl->dPdu = dPdu_sd_dl;
        sd_shadow->dPdu = dPdu_sd_shadow;
 
        sd->dPdv = dPdv_sd;
-       sd_dl->dPdv = dPdv_sd_dl;
        sd_shadow->dPdv = dPdv_sd_shadow;
        #endif
        #endif
 
        sd->closure = closure_sd;
-       sd_dl->closure = closure_sd_dl;
        sd_shadow->closure = closure_sd_shadow;
 
        sd->num_closure = num_closure_sd;
-       sd_dl->num_closure = num_closure_sd_dl;
        sd_shadow->num_closure = num_closure_sd_shadow;
 
        sd->randb_closure = randb_closure_sd;
-       sd_dl->randb_closure = randb_closure_sd_dl;
        sd_shadow->randb_closure = randb_closure_sd_shadow;
 
        sd->ray_P = ray_P_sd;
-       sd_dl->ray_P = ray_P_sd_dl;
        sd_shadow->ray_P = ray_P_sd_shadow;
 
        sd->ray_dP = ray_dP_sd;
-       sd_dl->ray_dP = ray_dP_sd_dl;
        sd_shadow->ray_dP = ray_dP_sd_shadow;
 
        int thread_index = get_global_id(1) * get_global_size(0) + 
get_global_id(0);

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

Reply via email to