[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60297] branches/soc-2013-vse/source/ blender/sequencer/commands: Adding seqCommands for rendering the effects.

Alexander Kuznetsov kuzsasha at gmail.com
Sun Sep 22 05:31:45 CEST 2013


Revision: 60297
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60297
Author:   alexk
Date:     2013-09-22 03:31:44 +0000 (Sun, 22 Sep 2013)
Log Message:
-----------
Adding seqCommands for rendering the effects. The commands have functions, with which engine can check what optimizations are supported (OpenCL, multithreading). 
The kernels for these commands are in a seperate file.

Modified Paths:
--------------
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBrightenss.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBrightenss.h

Added Paths:
-----------
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAdd.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAdd.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaOver.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaOver.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaUnder.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaUnder.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendCross.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendCross.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendMultiply.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendMultiply.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendSubtract.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendSubtract.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandColorBalance.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandColorBalance.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandGenerate.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandGenerate.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandHistogram.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandHistogram.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandTransform.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandTransform.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandVectorscope.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandVectorscope.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandWaveform.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandWaveform.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqRoutineConvert.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqRoutineConvert.h
    branches/soc-2013-vse/source/blender/sequencer/commands/seqRoutineTransfer.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/seqRoutineTransfer.h
    branches/soc-2013-vse/source/blender/sequencer/commands/sequencer_seqCommand.cpp
    branches/soc-2013-vse/source/blender/sequencer/commands/sequencer_seqCommand.h

Added: branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAdd.cpp
===================================================================
--- branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAdd.cpp	                        (rev 0)
+++ branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAdd.cpp	2013-09-22 03:31:44 UTC (rev 60297)
@@ -0,0 +1,62 @@
+#include "seqCommandBlendAdd.h"
+#include "sequencer_seqBucket.h"
+
+
+#include "kernel/common_stuctures.h"
+
+
+
+void seqCommandBlendAdd::prepare(seqDevice *dev, seqBucket *bucket)
+{
+	ini = &bucket->internalImg[this->inimgid1];
+	in2i = &bucket->internalImg[this->inimgid2];
+	outi = &bucket->internalImg[this->outimgid];
+
+	outi->set_phys_size(&bucket->internalImg[this->inimgid1],
+			&bucket->internalImg[this->inimgid2]);
+
+	outi->AllocateFromSize(dev);
+}
+
+
+
+
+
+
+int seqCommandBlendAdd::exec_gpu(seqDeviceCL *dev, seqBucket *bucket)
+{
+	cl_int err = 0;
+	size_t size[2];
+
+	size[0] = outi->get_physx();
+	size[1] = outi->get_physy();
+
+	bufsize outs = outi->get_phys();
+
+
+	imgbuf in1d;
+	in1d.p.posx = ini->startpoint[0] - outi->startpoint[0];
+	in1d.p.posy = ini->startpoint[1] - outi->startpoint[1];
+	in1d.s = ini->get_phys();
+
+	imgbuf in2d;
+	in2d.p.posx = in2i->startpoint[0] - outi->startpoint[0];
+	in2d.p.posy = in2i->startpoint[1] - outi->startpoint[1];
+	in2d.s = in2i->get_phys();
+
+	dev->SetKernelArg(kAdd, 0, &ini->buf.cl_pointer, "");
+	dev->SetKernelArg(kAdd, 1, &in1d, "");
+
+	dev->SetKernelArg(kAdd, 2, &in2i->buf.cl_pointer, "");
+	dev->SetKernelArg(kAdd, 3, &in2d, "");
+
+	dev->SetKernelArg(kAdd, 4, &outi->buf.cl_pointer, "");
+
+	dev->SetKernelArg(kAdd, 5, &outs, "");
+	dev->SetKernelArg(kAdd, 6, &factor, "");
+
+
+	err |= clEnqueueNDRangeKernel(dev->local_cl_queue, dev->local_cl_main_kernels[0][kAdd], 2, 0, size, 0, 0, 0, 0);
+
+	return 0;
+}

Added: branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAdd.h
===================================================================
--- branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAdd.h	                        (rev 0)
+++ branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAdd.h	2013-09-22 03:31:44 UTC (rev 60297)
@@ -0,0 +1,76 @@
+#ifndef __SEQCOMMANDBLENDADD_H__
+#define __SEQCOMMANDBLENDADD_H__
+
+#include "sequencer_seqCommand.h"
+
+class seqCommandBlendAdd : public seqCommand
+{
+private:
+	int outimgid;
+	int inimgid1;
+	int inimgid2;
+
+	float factor;
+
+	seqImageStorage *outi;
+	seqImageStorage *ini;
+	seqImageStorage *in2i;
+
+
+public:
+
+
+
+
+	void set_data(float factor)
+	{
+		this->factor = factor;
+	}
+
+
+	bool set_io_images(int out, int in1, int in2, int in3)
+	{
+		outimgid = out;
+		inimgid1 = in1;
+		inimgid2 = in2;
+
+		return true;
+	}
+
+
+	unsigned int get_implementation(void) const
+	{
+		return SEQ_DEVICE_TYPE_CL;
+	}
+
+	int get_number_input(void)
+	{
+		return 2;
+	}
+
+
+	int get_input_id(int imputn)
+	{
+		return -1;
+	}
+
+
+	void prepare(seqDevice *dev, seqBucket *bucket);
+
+
+	int exec_cpu(seqDeviceCPU *dev, seqBucket * bucket)
+	{
+		return 0;
+	};
+
+
+
+
+	int exec_gpu(seqDeviceCL *dev, seqBucket *bucket);
+
+	int get_implementation_devies(void);
+
+
+};
+
+#endif /* __SEQCOMMANDBLENDADD_H__ */

Added: branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaOver.cpp
===================================================================
--- branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaOver.cpp	                        (rev 0)
+++ branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaOver.cpp	2013-09-22 03:31:44 UTC (rev 60297)
@@ -0,0 +1,60 @@
+#include "seqCommandBlendAlphaOver.h"
+#include "sequencer_seqBucket.h"
+
+
+#include "kernel/common_stuctures.h"
+
+
+
+void seqCommandBlendAlphaOver::prepare(seqDevice *dev, seqBucket *bucket)
+{
+	ini = &bucket->internalImg[this->inimgid1];
+	in2i = &bucket->internalImg[this->inimgid2];
+	outi = &bucket->internalImg[this->outimgid];
+
+	outi->set_phys_size(&bucket->internalImg[this->inimgid1],
+			&bucket->internalImg[this->inimgid2]);
+
+	outi->AllocateFromSize(dev);
+}
+
+
+
+
+
+
+int seqCommandBlendAlphaOver::exec_gpu(seqDeviceCL *dev, seqBucket *bucket)
+{
+	size_t size[2];
+
+	size[0] = outi->get_physx();
+	size[1] = outi->get_physy();
+
+	bufsize outs = outi->get_phys();
+
+
+	imgbuf in1d;
+	in1d.p.posx = ini->startpoint[0] - outi->startpoint[0];
+	in1d.p.posy = ini->startpoint[1] - outi->startpoint[1];
+	in1d.s = ini->get_phys();
+
+	imgbuf in2d;
+	in2d.p.posx = in2i->startpoint[0] - outi->startpoint[0];
+	in2d.p.posy = in2i->startpoint[1] - outi->startpoint[1];;
+	in2d.s = in2i->get_phys();
+
+	dev->SetKernelArg(kAlphaOver, 0, &ini->buf.cl_pointer, "");
+	dev->SetKernelArg(kAlphaOver, 1, &in1d, "");
+
+	dev->SetKernelArg(kAlphaOver, 2, &in2i->buf.cl_pointer, "");
+	dev->SetKernelArg(kAlphaOver, 3, &in2d, "");
+
+	dev->SetKernelArg(kAlphaOver, 4, &outi->buf.cl_pointer, "");
+
+	dev->SetKernelArg(kAlphaOver, 5, &outs, "");
+	dev->SetKernelArg(kAlphaOver, 6, &factor, "");
+
+	dev->RunKernelRectangleBounded(kAlphaOver, size[0], size[1]);
+
+	return 0;
+}

Added: branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaOver.h
===================================================================
--- branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaOver.h	                        (rev 0)
+++ branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaOver.h	2013-09-22 03:31:44 UTC (rev 60297)
@@ -0,0 +1,76 @@
+#ifndef __SEQCOMMANDBLENDALPHAOVER_H__
+#define __SEQCOMMANDBLENDALPHAOVER_H__
+
+#include "sequencer_seqCommand.h"
+
+class seqCommandBlendAlphaOver : public seqCommand
+{
+private:
+	int outimgid;
+	int inimgid1;
+	int inimgid2;
+
+	float factor;
+
+	seqImageStorage *outi;
+	seqImageStorage *ini;
+	seqImageStorage *in2i;
+
+
+public:
+
+
+
+
+	void set_data(float factor)
+	{
+		this->factor = factor;
+	}
+
+
+	bool set_io_images(int out, int in1, int in2, int in3)
+	{
+		outimgid = out;
+		inimgid1 = in1;
+		inimgid2 = in2;
+
+		return true;
+	}
+
+
+	unsigned int get_implementation(void) const
+	{
+		return SEQ_DEVICE_TYPE_CL;
+	}
+
+	int get_number_input(void)
+	{
+		return 2;
+	}
+
+
+	int get_input_id(int imputn)
+	{
+		return -1;
+	}
+
+
+	void prepare(seqDevice *dev, seqBucket *bucket);
+
+
+	int exec_cpu(seqDeviceCPU *dev, seqBucket * bucket)
+	{
+		return 0;
+	};
+
+
+
+
+	int exec_gpu(seqDeviceCL *dev, seqBucket *bucket);
+
+	int get_implementation_devies(void);
+
+
+};
+
+#endif /* __SEQCOMMANDBLENDALPHAOVER_H__ */

Added: branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaUnder.cpp
===================================================================
--- branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaUnder.cpp	                        (rev 0)
+++ branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaUnder.cpp	2013-09-22 03:31:44 UTC (rev 60297)
@@ -0,0 +1,61 @@
+#include "seqCommandBlendAlphaUnder.h"
+#include "sequencer_seqBucket.h"
+
+
+#include "kernel/common_stuctures.h"
+
+
+
+void seqCommandBlendAlphaUnder::prepare(seqDevice *dev, seqBucket *bucket)
+{
+	ini = &bucket->internalImg[this->inimgid1];
+	in2i = &bucket->internalImg[this->inimgid2];
+	outi = &bucket->internalImg[this->outimgid];
+
+	outi->set_phys_size(&bucket->internalImg[this->inimgid1],
+			&bucket->internalImg[this->inimgid2]);
+
+	outi->AllocateFromSize(dev);
+}
+
+
+
+
+
+
+int seqCommandBlendAlphaUnder::exec_gpu(seqDeviceCL *dev, seqBucket *bucket)
+{
+	size_t size[2];
+
+	size[0] = outi->get_physx();
+	size[1] = outi->get_physy();
+
+	bufsize outs = outi->get_phys();
+
+
+	imgbuf in1d;
+	in1d.p.posx = ini->startpoint[0] - outi->startpoint[0];
+	in1d.p.posy = ini->startpoint[1] - outi->startpoint[1];
+	in1d.s = ini->get_phys();
+
+	imgbuf in2d;
+	in2d.p.posx = in2i->startpoint[0] - outi->startpoint[0];
+	in2d.p.posy = in2i->startpoint[1] - outi->startpoint[1];;
+	in2d.s = in2i->get_phys();
+
+	dev->SetKernelArg(kAlphaUnder, 0, &ini->buf.cl_pointer, "");
+	dev->SetKernelArg(kAlphaUnder, 1, &in1d, "");
+
+	dev->SetKernelArg(kAlphaUnder, 2, &in2i->buf.cl_pointer, "");
+	dev->SetKernelArg(kAlphaUnder, 3, &in2d, "");
+
+	dev->SetKernelArg(kAlphaUnder, 4, &outi->buf.cl_pointer, "");
+
+	dev->SetKernelArg(kAlphaUnder, 5, &outs, "");
+	dev->SetKernelArg(kAlphaUnder, 6, &factor, "");
+
+
+	dev->RunKernelRectangleBounded(kAlphaUnder, size[0], size[1]);
+
+	return 0;
+}

Added: branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaUnder.h
===================================================================
--- branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaUnder.h	                        (rev 0)
+++ branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendAlphaUnder.h	2013-09-22 03:31:44 UTC (rev 60297)
@@ -0,0 +1,76 @@
+#ifndef __SEQCOMMANDBLENDALPHAUNDER_H__
+#define __SEQCOMMANDBLENDALPHAUNDER_H__
+
+#include "sequencer_seqCommand.h"
+
+class seqCommandBlendAlphaUnder : public seqCommand
+{
+private:
+	int outimgid;
+	int inimgid1;
+	int inimgid2;
+
+	float factor;
+
+	seqImageStorage *outi;
+	seqImageStorage *ini;
+	seqImageStorage *in2i;
+
+
+public:
+
+
+
+
+	void set_data(float factor)
+	{
+		this->factor = factor;
+	}
+
+
+	bool set_io_images(int out, int in1, int in2, int in3)
+	{
+		outimgid = out;
+		inimgid1 = in1;
+		inimgid2 = in2;
+
+		return true;
+	}
+
+
+	unsigned int get_implementation(void) const
+	{
+		return SEQ_DEVICE_TYPE_CL;
+	}
+
+	int get_number_input(void)
+	{
+		return 2;
+	}
+
+
+	int get_input_id(int imputn)
+	{
+		return -1;
+	}
+
+
+	void prepare(seqDevice *dev, seqBucket *bucket);
+
+
+	int exec_cpu(seqDeviceCPU *dev, seqBucket * bucket)
+	{
+		return 0;
+	};
+
+
+
+
+	int exec_gpu(seqDeviceCL *dev, seqBucket *bucket);
+
+	int get_implementation_devies(void);
+
+
+};
+
+#endif /* __SEQCOMMANDBLENDALPHAUNDER_H__ */

Added: branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendCross.cpp
===================================================================
--- branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendCross.cpp	                        (rev 0)
+++ branches/soc-2013-vse/source/blender/sequencer/commands/seqCommandBlendCross.cpp	2013-09-22 03:31:44 UTC (rev 60297)
@@ -0,0 +1,60 @@
+#include "seqCommandBlendCross.h"
+#include "sequencer_seqBucket.h"
+
+
+#include "kernel/common_stuctures.h"
+
+
+
+void seqCommandBlendCross::prepare(seqDevice *dev, seqBucket *bucket)
+{

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list