[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48370] branches/soc-2011-tomato/intern/ cycles/device: Forgot these files in previous commit.

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Jun 28 13:17:01 CEST 2012


Revision: 48370
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48370
Author:   blendix
Date:     2012-06-28 11:16:47 +0000 (Thu, 28 Jun 2012)
Log Message:
-----------
Forgot these files in previous commit.

Added Paths:
-----------
    branches/soc-2011-tomato/intern/cycles/device/device_task.cpp
    branches/soc-2011-tomato/intern/cycles/device/device_task.h

Added: branches/soc-2011-tomato/intern/cycles/device/device_task.cpp
===================================================================
--- branches/soc-2011-tomato/intern/cycles/device/device_task.cpp	                        (rev 0)
+++ branches/soc-2011-tomato/intern/cycles/device/device_task.cpp	2012-06-28 11:16:47 UTC (rev 48370)
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2011, Blender Foundation.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "device_task.h"
+
+#include "util_algorithm.h"
+
+CCL_NAMESPACE_BEGIN
+
+/* Device Task */
+
+DeviceTask::DeviceTask(Type type_)
+: type(type_), x(0), y(0), w(0), h(0), rgba(0), buffer(0),
+  sample(0), num_samples(1), resolution(0),
+  shader_input(0), shader_output(0),
+  shader_eval_type(0), shader_x(0), shader_w(0)
+{
+}
+
+void DeviceTask::split_max_size(list<DeviceTask>& tasks, int max_size)
+{
+	int num;
+
+	if(type == SHADER) {
+		num = (shader_w + max_size - 1)/max_size;
+	}
+	else {
+		max_size = max(1, max_size/w);
+		num = (h + max_size - 1)/max_size;
+	}
+
+	split(tasks, num);
+}
+
+void DeviceTask::split(list<DeviceTask>& tasks, int num)
+{
+	if(type == SHADER) {
+		num = min(shader_w, num);
+
+		for(int i = 0; i < num; i++) {
+			int tx = shader_x + (shader_w/num)*i;
+			int tw = (i == num-1)? shader_w - i*(shader_w/num): shader_w/num;
+
+			DeviceTask task = *this;
+
+			task.shader_x = tx;
+			task.shader_w = tw;
+
+			tasks.push_back(task);
+		}
+	}
+	else if(type == PATH_TRACE) {
+		for(int i = 0; i < num; i++)
+			tasks.push_back(*this);
+	}
+	else {
+		num = min(h, num);
+
+		for(int i = 0; i < num; i++) {
+			int ty = y + (h/num)*i;
+			int th = (i == num-1)? h - i*(h/num): h/num;
+
+			DeviceTask task = *this;
+
+			task.y = ty;
+			task.h = th;
+
+			tasks.push_back(task);
+		}
+	}
+}
+
+CCL_NAMESPACE_END
+

Added: branches/soc-2011-tomato/intern/cycles/device/device_task.h
===================================================================
--- branches/soc-2011-tomato/intern/cycles/device/device_task.h	                        (rev 0)
+++ branches/soc-2011-tomato/intern/cycles/device/device_task.h	2012-06-28 11:16:47 UTC (rev 48370)
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2011, Blender Foundation.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __DEVICE_TASK_H__
+#define __DEVICE_TASK_H__
+
+#include "device_memory.h"
+
+#include "util_function.h"
+#include "util_list.h"
+#include "util_task.h"
+
+CCL_NAMESPACE_BEGIN
+
+/* Device Task */
+
+class Device;
+class RenderBuffers;
+class RenderTile;
+class Tile;
+
+class DeviceTask : public Task {
+public:
+	typedef enum { PATH_TRACE, TONEMAP, SHADER } Type;
+	Type type;
+
+	int x, y, w, h;
+	device_ptr rgba;
+	device_ptr buffer;
+	int sample;
+	int num_samples;
+	int resolution;
+	int offset, stride;
+
+	device_ptr shader_input;
+	device_ptr shader_output;
+	int shader_eval_type;
+	int shader_x, shader_w;
+
+	DeviceTask(Type type = PATH_TRACE);
+
+	void split(list<DeviceTask>& tasks, int num);
+	void split_max_size(list<DeviceTask>& tasks, int max_size);
+
+	boost::function<bool(Device *device, RenderTile&)> acquire_tile;
+	boost::function<void(RenderTile&)> release_tile;
+};
+
+CCL_NAMESPACE_END
+
+#endif /* __DEVICE_TASK_H__ */
+




More information about the Bf-blender-cvs mailing list