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__ */
+

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

Reply via email to