[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31813] branches/particles-2010/source/ blender: Added a wrapper layer for OpenCL functions and data types.

Lukas Toenne lukas.toenne at googlemail.com
Tue Sep 7 14:07:39 CEST 2010


Revision: 31813
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31813
Author:   lukastoenne
Date:     2010-09-07 14:07:39 +0200 (Tue, 07 Sep 2010)

Log Message:
-----------
Added a wrapper layer for OpenCL functions and data types. This allows seamless integration of a fallback if OpenCL is not available or enabled. It also allows the use of socket data types directly in the buffer methods, making node implementation easier.

Modified Paths:
--------------
    branches/particles-2010/source/blender/blenkernel/BKE_node.h
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle_force.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_debugprint.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_filter.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_for.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_data.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_if.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_math.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_particle_dynamics.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_pass.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_program.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_random.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_set_data.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_subprogram.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_timestep.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_vector_compose.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_vector_decompose.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_vectormath.c
    branches/particles-2010/source/blender/nodes/intern/SIM_util.c
    branches/particles-2010/source/blender/nodes/intern/SIM_util.h
    branches/particles-2010/source/blender/nodes/intern/node_tree_simulation.c

Modified: branches/particles-2010/source/blender/blenkernel/BKE_node.h
===================================================================
--- branches/particles-2010/source/blender/blenkernel/BKE_node.h	2010-09-07 12:03:09 UTC (rev 31812)
+++ branches/particles-2010/source/blender/blenkernel/BKE_node.h	2010-09-07 12:07:39 UTC (rev 31813)
@@ -117,9 +117,6 @@
 	void (*updatefunc)(struct bNodeTree *ntree, struct bNode *node);
 
 	/* simulation nodes */
-	int (*sim_execfunc)(struct SimNodeThreadContext *ctx, struct SimNodeJob *job);
-	int (*sim_opexecfunc)(struct SimNodeThreadContext *ctx, struct bNode *node, int level, int *r_opsock);
-
 	const char *cl_source;
 	void (*enqueue)(struct SimExecData *execdata, struct SimNodeStack *node, struct SimDataContext *self);
 	void (*enqueue_op)(struct SimExecData *execdata, struct SimNodeStack *node, struct SimDataContext *self, int execlevel, int *pushop);

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle.c	2010-09-07 12:03:09 UTC (rev 31812)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle.c	2010-09-07 12:07:39 UTC (rev 31813)
@@ -47,25 +47,6 @@
 	{ -1, 0, "" }
 };
 
-static int exec(SimNodeThreadContext *ctx, SimNodeJob *job)
-{
-	return NODE_EXEC_FINISHED;
-}
-
-static int opexec(SimNodeThreadContext *ctx, bNode *node, int level, int *r_opsock)
-{
-//	SimNodeDataStream ostream[1];
-//	Object *ob = (Object*)node->id;
-//	
-//	if (ob && ob->type == OB_PSET) {
-//		ParticleSet *pset = (ParticleSet*)ob->data;
-//		
-//		pset_create_particles(pset, ctx->sim->cfra, 1);
-//		*r_opsock = 0;
-//	}
-	return NODE_EXEC_FINISHED;
-}
-
 bNodeType sim_node_addparticle= {
 	/* *next,*prev     */	NULL, NULL,
 	/* type code       */	SIM_NODE_ADDPARTICLE,
@@ -83,7 +64,5 @@
 	/* id              */	NULL,
 	/* pynode, pydict  */	NULL, NULL,
 	/* gpufunc         */	NULL,
-	/* updatefunc      */	NULL,
-	/* sim_exec        */	exec,
-	/* sim_opexec      */	opexec
+	/* updatefunc      */	NULL
 };

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle_force.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle_force.c	2010-09-07 12:03:09 UTC (rev 31812)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle_force.c	2010-09-07 12:07:39 UTC (rev 31813)
@@ -48,44 +48,6 @@
 	{ -1, 0, "" }
 };
 
-static int exec(SimNodeThreadContext *ctx, SimNodeJob *job)
-{
-//	SimNodeDataStream istream[1];
-//	Object *ob = (Object*)job->node->node->id;
-//	
-//	if (ob && ob->type == OB_PSET) {
-//		ParticleSet *pset = (ParticleSet*)ob->data;
-//		ParticleIterator pit;
-//		ParticlePropertyInfo *propforce = pset_find_particle_property(pset, "Force");
-//		
-//		if (!propforce)
-//			return NODE_EXEC_FINISHED;
-//		
-//		pit_init(&pit, pset);
-//		pit_goto(&pit, (job->execlevel == 0 ? job->input_start : job->current));
-//		SIM_JOBEXEC_OUTPUT_BEGIN(ctx, job, istream, pit.pa != NULL);
-//		add_v3_v3(pset_parprop(pit.pa, propforce), sim_istream_read_vector(istream, 0));
-//		pit_next(&pit);
-//		SIM_JOBEXEC_OUTPUT_FILTERED
-//		pit_next(&pit);
-//		SIM_JOBEXEC_OUTPUT_END(ctx, job)
-//	}
-	return NODE_EXEC_FINISHED;
-}
-
-static int opexec(SimNodeThreadContext *ctx, bNode *node, int level, int *r_opsock)
-{
-	Object *ob = (Object*)node->id;
-	
-	if (ob && ob->type == OB_PSET) {
-		ParticleSet *pset = (ParticleSet*)ob->data;
-		
-		DAG_id_flush_update(&pset->id, OB_RECALC_DATA);
-//		WM_main_add_notifier(NC_GEOM|ND_DATA, &mesh->id);
-	}
-	return NODE_EXEC_FINISHED;
-}
-
 bNodeType sim_node_addparticleforce= {
 	/* *next,*prev     */	NULL, NULL,
 	/* type code       */	SIM_NODE_ADDPARTICLEFORCE,
@@ -103,7 +65,5 @@
 	/* id              */	NULL,
 	/* pynode, pydict  */	NULL, NULL,
 	/* gpufunc         */	NULL,
-	/* updatefunc      */	NULL,
-	/* sim_exec        */	exec,
-	/* sim_opexec      */	opexec
+	/* updatefunc      */	NULL
 };

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_debugprint.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_debugprint.c	2010-09-07 12:03:09 UTC (rev 31812)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_debugprint.c	2010-09-07 12:07:39 UTC (rev 31813)
@@ -40,56 +40,6 @@
 	{ -1, 0, "" }
 };
 
-static int exec(SimNodeThreadContext *ctx, SimNodeJob *job)
-{
-//	SimNodeDataStream istream[1];
-//	SimNodeDataStream ostream[1];
-//	int i, valid;
-//	int ival;
-//	char cval;
-//	float fval, *vval;
-//	
-//	if (job->execlevel == 0)
-//		printf("Debug print (node '%s', level %d)\n", job->node->node->name, job->execlevel);
-//	valid = (sim_istream_init(istream, ctx, job) && sim_ostream_init(ostream, ctx, job, job->input_start));
-//	for (i=0; valid; ++i) {
-//		printf("Element %d: ", i);
-//		switch (job->node->inputs[0]->datatype) {
-//		case SOCK_FLOAT:
-//			fval = sim_istream_read_float(istream, 0);
-//			printf("%f", fval);
-//			sim_ostream_write_float(ostream, 0, fval);
-//			break;
-//		case SOCK_INT:
-//			ival = sim_istream_read_int(istream, 0);
-//			printf("%d", ival);
-//			sim_ostream_write_int(ostream, 0, ival);
-//			break;
-//		case SOCK_BOOL:
-//			cval = sim_istream_read_bool(istream, 0);
-//			printf("%f", fval);
-//			sim_ostream_write_bool(ostream, 0, cval);
-//			break;
-//		case SOCK_VECTOR:
-//			vval = sim_istream_read_vector(istream, 0);
-//			printf("(%f, %f, %f)", vval[0], vval[1], vval[2]);
-//			sim_ostream_write_vector(ostream, 0, vval);
-//			break;
-//		case SOCK_RGBA:
-//			vval = sim_istream_read_rgba(istream, 0);
-//			printf("[%f, %f, %f, %f]", vval[0], vval[1], vval[2], vval[3]);
-//			sim_ostream_write_rgba(ostream, 0, vval);
-//			break;
-//		}
-//		valid = sim_istream_next(istream) && sim_ostream_next(ostream);
-//		printf("\n");
-//	}
-//	sim_istream_close(istream, ctx);
-//	sim_ostream_close(ostream, ctx, job);
-//	job->storage1 = i;	/* starting point when resuming */
-	return NODE_EXEC_FINISHED;
-}
-
 bNodeType sim_node_debugprint= {
 	/* *next,*prev     */	NULL, NULL,
 	/* type code       */	SIM_NODE_DEBUGPRINT,
@@ -107,7 +57,5 @@
 	/* id              */	NULL,
 	/* pynode, pydict  */	NULL, NULL,
 	/* gpufunc         */	NULL,
-	/* updatefunc      */	NULL,
-	/* sim_exec        */	exec,
-	/* sim_opexec      */	NULL
+	/* updatefunc      */	NULL
 };

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_filter.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_filter.c	2010-09-07 12:03:09 UTC (rev 31812)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_filter.c	2010-09-07 12:07:39 UTC (rev 31813)
@@ -44,58 +44,6 @@
 	{ -1, 0, "" }
 };
 
-static int exec(SimNodeThreadContext *ctx, SimNodeJob *job)
-{
-//	SimNodeDataStream istream[2];
-//	SimNodeDataStream ostream[1];
-//	
-//	switch (job->node->outputs[0].datatype) {
-//	case SOCK_OP:
-//		break;
-//	case SOCK_FLOAT:
-//		SIM_JOBEXEC_BEGIN(ctx, job, istream, ostream);
-//		if (sim_istream_read_bool(istream, 0))
-//			sim_ostream_filter(ostream, 0);
-//		else
-//			sim_ostream_write_float(ostream, 0, sim_istream_read_float(istream, 1));
-//		SIM_JOBEXEC_END(ctx, job)
-//		break;
-//	case SOCK_INT:
-//		SIM_JOBEXEC_BEGIN(ctx, job, istream, ostream);
-//		if (sim_istream_read_bool(istream, 0))
-//			sim_ostream_filter(ostream, 0);
-//		else
-//			sim_ostream_write_int(ostream, 0, sim_istream_read_int(istream, 1));
-//		SIM_JOBEXEC_END(ctx, job)
-//		break;
-//	case SOCK_BOOL:
-//		SIM_JOBEXEC_BEGIN(ctx, job, istream, ostream);
-//		if (sim_istream_read_bool(istream, 0))
-//			sim_ostream_filter(ostream, 0);
-//		else
-//			sim_ostream_write_bool(ostream, 0, sim_istream_read_bool(istream, 1));
-//		SIM_JOBEXEC_END(ctx, job)
-//		break;
-//	case SOCK_VECTOR:
-//		SIM_JOBEXEC_BEGIN(ctx, job, istream, ostream);
-//		if (sim_istream_read_bool(istream, 0))
-//			sim_ostream_filter(ostream, 0);
-//		else
-//			sim_ostream_write_vector(ostream, 0, sim_istream_read_vector(istream, 1));
-//		SIM_JOBEXEC_END(ctx, job)
-//		break;
-//	case SOCK_RGBA:
-//		SIM_JOBEXEC_BEGIN(ctx, job, istream, ostream);
-//		if (sim_istream_read_bool(istream, 0))
-//			sim_ostream_filter(ostream, 0);
-//		else
-//			sim_ostream_write_rgba(ostream, 0, sim_istream_read_rgba(istream, 1));
-//		SIM_JOBEXEC_END(ctx, job)
-//		break;
-//	}
-	return NODE_EXEC_FINISHED;
-}
-
 bNodeType sim_node_filter= {
 	/* *next,*prev     */	NULL, NULL,
 	/* type code       */	SIM_NODE_FILTER,
@@ -113,7 +61,5 @@
 	/* id              */	NULL,
 	/* pynode, pydict  */	NULL, NULL,
 	/* gpufunc         */	NULL,
-	/* updatefunc      */	NULL,
-	/* sim_exec        */	exec,
-	/* sim_opexec      */	NULL
+	/* updatefunc      */	NULL
 };

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_for.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_for.c	2010-09-07 12:03:09 UTC (rev 31812)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_for.c	2010-09-07 12:07:39 UTC (rev 31813)
@@ -44,26 +44,6 @@
 	{ -1, 0, "" }
 };
 
-static int exec(SimNodeThreadContext *ctx, SimNodeJob *job)
-{
-//	SimNodeDataStream istream[1];
-//	
-//	SIM_JOBEXEC_OUTPUT_BEGIN(ctx, job, istream, job->current < 1);
-//	job->node->node->custom1 = sim_istream_read_int(istream, 0);
-//	SIM_JOBEXEC_OUTPUT_END(ctx, job)
-	return NODE_EXEC_FINISHED;
-}
-
-static int opexec(SimNodeThreadContext *ctx, bNode *node, int level, int *r_opsock)
-{
-	if (level < node->custom1) {
-		*r_opsock = 0;
-		return NODE_EXEC_SUSPEND;
-	}
-	else
-		return NODE_EXEC_FINISHED;
-}
-
 bNodeType sim_node_for= {
 	/* *next,*prev     */	NULL, NULL,
 	/* type code       */	SIM_NODE_FOR,
@@ -81,7 +61,5 @@
 	/* id              */	NULL,
 	/* pynode, pydict  */	NULL, NULL,
 	/* gpufunc         */	NULL,
-	/* updatefunc      */	NULL,
-	/* sim_exec        */	exec,
-	/* sim_opexec      */	opexec
+	/* updatefunc      */	NULL
 };

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_data.c
===================================================================

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list