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