Commit: c5eb95aa27be613345a625cc4a28befa0339f1d1 Author: varunsundar08 Date: Thu Apr 9 14:47:24 2015 +0530 Branches: cycles_kernel_split https://developer.blender.org/rBc5eb95aa27be613345a625cc4a28befa0339f1d1
Initialize per_thread_output_buffer_size based in render type =================================================================== M intern/cycles/device/device_opencl.cpp M intern/cycles/render/session.cpp =================================================================== diff --git a/intern/cycles/device/device_opencl.cpp b/intern/cycles/device/device_opencl.cpp index 3329fb7..983a7be 100644 --- a/intern/cycles/device/device_opencl.cpp +++ b/intern/cycles/device/device_opencl.cpp @@ -565,6 +565,8 @@ public: /* Number of path-iterations to be done in one shot */ unsigned int PathIteration_times; + /* Denotes if the render is background or foreground */ + bool background; #ifdef __WORK_STEALING__ /* Work pool with respect to each work group */ cl_mem work_pool_wgs; @@ -653,6 +655,7 @@ public: #ifdef __SPLIT_KERNEL__ use_split_kernel = true; + background = background_; /* Initialize kernels */ ckPathTraceKernel_DataInit_SPLIT_KERNEL = NULL; @@ -3605,7 +3608,18 @@ public: ciErr = clGetMemObjectInfo((cl_mem)tile.buffer, CL_MEM_SIZE, sizeof(output_buffer_size), &output_buffer_size, NULL); assert(ciErr == CL_SUCCESS && "Can't get tile.buffer mem object info"); /* This value is different when running on AMD and NV */ - per_thread_output_buffer_size = output_buffer_size / (tile.w * tile.h); + if (background) { + /* In offline render the number of buffer elements + * associated with tile.buffer is the current tile size + */ + per_thread_output_buffer_size = output_buffer_size / (tile.w * tile.h); + } + else { + /* interactive rendering, unlike offline render, the number of buffer elements + * associated with tile.buffer is the entire viewport size. + */ + per_thread_output_buffer_size = output_buffer_size / (tile.buffers->params.width * tile.buffers->params.height); + } /* Check render feasibility */ feasible_global_work_size = get_feasible_global_work_size(tile, CL_MEM_PTR(const_mem_map["__data"]->device_pointer)); diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index 68ba9e5..36895d4 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -274,6 +274,11 @@ void Session::run_gpu() /* update status and timing */ update_status_time(); + if (device->use_split_kernel) { + /* OpenCL split - load kernels */ + load_kernels(); + } + /* path trace */ path_trace(); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs