Commit: 8945f4f23f7fb0a41be14789481dc88dd0642d86
Author: Sergey Sharybin
Date:   Fri May 8 20:49:02 2015 +0500
Branches: cycles_kernel_split
https://developer.blender.org/rB8945f4f23f7fb0a41be14789481dc88dd0642d86

Cycles kernel split: Avoid storing size of structures in device members

Not sure why it might be considered preferable way, changing those types will
be real pain and really unlikely to happen.

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

M       intern/cycles/device/device_opencl.cpp

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

diff --git a/intern/cycles/device/device_opencl.cpp 
b/intern/cycles/device/device_opencl.cpp
index 2aa271d..2ba696f 100644
--- a/intern/cycles/device/device_opencl.cpp
+++ b/intern/cycles/device/device_opencl.cpp
@@ -1427,7 +1427,6 @@ public:
        cl_mem use_queues_flag;
 
        /* Required-memory size */
-       size_t rng_size;
        size_t throughput_size;
        size_t L_transparent_size;
        size_t rayState_size;
@@ -1435,24 +1434,9 @@ public:
        size_t work_element_size;
        size_t ISLamp_size;
 
-       /* size of structures declared in kernel_types.h */
-       size_t PathRadiance_size;
-       size_t Ray_size;
-       size_t PathState_size;
-       size_t Intersection_size;
-
        /* Sizes of memory required for shadow blocked function */
        size_t AOAlpha_size;
        size_t AOBSDF_size;
-       size_t AOLightRay_size;
-       size_t LightRay_size;
-       size_t BSDFEval_size;
-       size_t Intersection_coop_AO_size;
-       size_t Intersection_coop_DL_size;
-
-#ifdef WITH_CYCLES_DEBUG
-       size_t debugdata_size;
-#endif
 
        /* Amount of memory in output buffer associated with one pixel/thread */
        size_t per_thread_output_buffer_size;
@@ -1610,7 +1594,6 @@ public:
                per_sample_output_buffers = NULL;
 
                /* Initialize required memory size */
-               rng_size = sizeof(RNG);
                throughput_size = sizeof(float3);
                L_transparent_size = sizeof(float);
                rayState_size = sizeof(char);
@@ -1618,30 +1601,9 @@ public:
                work_element_size = sizeof(unsigned int);
                ISLamp_size = sizeof(int);
 
-               /* Initialize size of structures declared in kernel_types.h */
-               PathRadiance_size = sizeof(PathRadiance);
-               Ray_size = sizeof(Ray);
-               PathState_size = sizeof(PathState);
-               Intersection_size = sizeof(Intersection);
-
-               /* Initialize sizes of memory required for shadow blocked 
function */
-               LightRay_size = sizeof(Ray);
-               BSDFEval_size = sizeof(BsdfEval);
-               Intersection_coop_AO_size = sizeof(Intersection);
-               Intersection_coop_DL_size = sizeof(Intersection);
-
                /* Initialize sizes of memory required for shadow blocked 
function */
                AOAlpha_size = sizeof(float3);
                AOBSDF_size = sizeof(float3);
-               AOLightRay_size = sizeof(Ray);
-               LightRay_size = sizeof(Ray);
-               BSDFEval_size = sizeof(BsdfEval);
-               Intersection_coop_AO_size = sizeof(Intersection);
-               Intersection_coop_DL_size = sizeof(Intersection);
-
-#ifdef WITH_CYCLES_DEBUG
-               debugdata_size = sizeof(DebugData);
-#endif
 
                per_thread_output_buffer_size = 0;
                hostRayStateArray = NULL;
@@ -2404,24 +2366,24 @@ public:
                        ray_dP_sd_DL_shadow = mem_alloc(num_global_elements * 2 
* sizeof(differential3));
 
                        /* creation of global memory buffers which are shared 
among the kernels */
-                       rng_coop = mem_alloc(num_global_elements * rng_size);
+                       rng_coop = mem_alloc(num_global_elements * sizeof(RNG));
                        throughput_coop = mem_alloc(num_global_elements * 
throughput_size);
                        L_transparent_coop = mem_alloc(num_global_elements * 
L_transparent_size);
-                       PathRadiance_coop = mem_alloc(num_global_elements * 
PathRadiance_size);
-                       Ray_coop = mem_alloc(num_global_elements * Ray_size);
-                       PathState_coop = mem_alloc(num_global_elements * 
PathState_size);
-                       Intersection_coop = mem_alloc(num_global_elements * 
Intersection_size);
+                       PathRadiance_coop = mem_alloc(num_global_elements * 
sizeof(PathRadiance));
+                       Ray_coop = mem_alloc(num_global_elements * sizeof(Ray));
+                       PathState_coop = mem_alloc(num_global_elements * 
sizeof(PathState));
+                       Intersection_coop = mem_alloc(num_global_elements * 
sizeof(Intersection));
                        AOAlpha_coop = mem_alloc(num_global_elements * 
AOAlpha_size);
                        AOBSDF_coop = mem_alloc(num_global_elements * 
AOBSDF_size);
-                       AOLightRay_coop = mem_alloc(num_global_elements * 
AOLightRay_size);
-                       BSDFEval_coop = mem_alloc(num_global_elements * 
BSDFEval_size);
+                       AOLightRay_coop = mem_alloc(num_global_elements * 
sizeof(Ray));
+                       BSDFEval_coop = mem_alloc(num_global_elements * 
sizeof(BsdfEval));
                        ISLamp_coop = mem_alloc(num_global_elements * 
ISLamp_size);
-                       LightRay_coop = mem_alloc(num_global_elements * 
LightRay_size);
-                       Intersection_coop_AO = mem_alloc(num_global_elements * 
Intersection_coop_AO_size);
-                       Intersection_coop_DL = mem_alloc(num_global_elements * 
Intersection_coop_DL_size);
+                       LightRay_coop = mem_alloc(num_global_elements * 
sizeof(Ray));
+                       Intersection_coop_AO = mem_alloc(num_global_elements * 
sizeof(Intersection));
+                       Intersection_coop_DL = mem_alloc(num_global_elements * 
sizeof(Intersection));
 
 #ifdef WITH_CYCLES_DEBUG
-                       debugdata_coop = mem_alloc(num_global_elements * 
debugdata_size);
+                       debugdata_coop = mem_alloc(num_global_elements * 
sizeof(DebugData));
 #endif
 
                        ray_state = mem_alloc(num_global_elements * 
rayState_size);
@@ -2900,14 +2862,14 @@ public:
                 */
                shaderdata_volume = get_shader_data_size(shader_closure_size);
 
-               size_t retval = rng_size + throughput_size + L_transparent_size 
+ rayState_size + work_element_size
-                       + ISLamp_size + PathRadiance_size + Ray_size + 
PathState_size
-                       + Intersection_size                  /* Overall isect */
-                       + Intersection_coop_AO_size          /* 
Instersection_coop_AO */
-                       + Intersection_coop_DL_size          /* Intersection 
coop DL */
+               size_t retval = sizeof(RNG) + throughput_size + 
L_transparent_size + rayState_size + work_element_size
+                       + ISLamp_size + sizeof(PathRadiance) + sizeof(Ray) + 
sizeof(PathState)
+                       + sizeof(Intersection)    /* Overall isect */
+                       + sizeof(Intersection)    /* Instersection_coop_AO */
+                       + sizeof(Intersection)    /* Intersection coop DL */
                        + shaderdata_volume       /* Overall ShaderData */
                        + (shaderdata_volume * 2) /* ShaderData : DL and shadow 
*/
-                       + LightRay_size + BSDFEval_size + AOAlpha_size + 
AOBSDF_size + AOLightRay_size
+                       + sizeof(Ray) + sizeof(BsdfEval) + AOAlpha_size + 
AOBSDF_size + sizeof(Ray)
                        + (sizeof(int)* NUM_QUEUES)
                        + per_thread_output_buffer_size;

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

Reply via email to