[Bf-blender-cvs] [c5c42964f8] cycles_split_kernel: Cycles: Expose passes size to device tasks

Mai Lavelle noreply at git.blender.org
Tue Jan 24 13:33:48 CET 2017


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);
 }




More information about the Bf-blender-cvs mailing list