Commit: c5c42964f8582e24b0cc5a703d41c3c7d05eab84
Author: Mai Lavelle
Date:   Fri Jan 20 03:05:32 2017 -0500
Branches: cycles_split_kernel
https://developer.blender.org/rBc5c42964f8582e24b0cc5a703d41c3c7d05eab84

Cycles: Expose passes size to device tasks

This is needed so devices can know the size of a tile buffer before any
tiles are acquired.

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

M       intern/cycles/device/device_split_kernel.cpp
M       intern/cycles/device/device_task.h
M       intern/cycles/render/session.cpp

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

diff --git a/intern/cycles/device/device_split_kernel.cpp 
b/intern/cycles/device/device_split_kernel.cpp
index 0670a10a5c..9429c901c8 100644
--- a/intern/cycles/device/device_split_kernel.cpp
+++ b/intern/cycles/device/device_split_kernel.cpp
@@ -126,28 +126,7 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
        global_size[1] = round_up(task->requested_tile_size.y, local_size[1]);
 
        /* Calculate per_thread_output_buffer_size. */
-       size_t per_thread_output_buffer_size;
-       {
-               size_t output_buffer_size = tile.buffers->buffer.device_size;
-
-#if 0
-               /* This value is different when running on AMD and NV. */
-               if(device->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
-#endif
-               {
-                       /* 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);
-               }
-       }
+       size_t per_thread_output_buffer_size = task->passes_size;
 
        /* Number of elements in the global state buffer */
        int num_global_elements = global_size[0] * global_size[1];
diff --git a/intern/cycles/device/device_task.h 
b/intern/cycles/device/device_task.h
index 8bd54c3d2b..f31092fd9d 100644
--- a/intern/cycles/device/device_task.h
+++ b/intern/cycles/device/device_task.h
@@ -51,6 +51,8 @@ public:
        int shader_filter;
        int shader_x, shader_w;
 
+       int passes_size;
+
        explicit DeviceTask(Type type = PATH_TRACE);
 
        int get_subtask_count(int num, int max_size = 0);
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index 17ea13b130..f70b8a9add 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -888,6 +888,7 @@ void Session::path_trace()
        task.need_finish_queue = params.progressive_refine;
        task.integrator_branched = scene->integrator->method == 
Integrator::BRANCHED_PATH;
        task.requested_tile_size = params.tile_size;
+       task.passes_size = delayed_reset.params.get_passes_size();
 
        device->task_add(task);
 }

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

Reply via email to