[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