aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/jogamp/opencl/util/concurrent/CLQueueContextFactory.java
diff options
context:
space:
mode:
authorMichael Bien <[email protected]>2011-05-07 02:11:44 +0200
committerMichael Bien <[email protected]>2011-05-07 02:11:44 +0200
commit19cc9195c73002f84c153a1ffc60f00408e1176e (patch)
tree2be66b79e071e1acddabf89eae3dd440435f26a4 /src/com/jogamp/opencl/util/concurrent/CLQueueContextFactory.java
parent8df524bf292051455005869ddfcfcc761af576e1 (diff)
introduced CLQueueContext and its factory - WIP.
Diffstat (limited to 'src/com/jogamp/opencl/util/concurrent/CLQueueContextFactory.java')
-rw-r--r--src/com/jogamp/opencl/util/concurrent/CLQueueContextFactory.java46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/com/jogamp/opencl/util/concurrent/CLQueueContextFactory.java b/src/com/jogamp/opencl/util/concurrent/CLQueueContextFactory.java
new file mode 100644
index 00000000..64fdfbcd
--- /dev/null
+++ b/src/com/jogamp/opencl/util/concurrent/CLQueueContextFactory.java
@@ -0,0 +1,46 @@
+/*
+ * Created onSaturday, May 07 2011 00:40
+ */
+package com.jogamp.opencl.util.concurrent;
+
+import com.jogamp.opencl.CLCommandQueue;
+import com.jogamp.opencl.CLProgram;
+
+/**
+ *
+ * @author Michael Bien
+ */
+public abstract class CLQueueContextFactory<C extends CLQueueContext> {
+
+ /**
+ * Creates a new queue context for the given queue.
+ * @param old the old context or null.
+ */
+ public abstract C setup(CLCommandQueue queue, CLQueueContext old);
+
+
+ /**
+ * Creates a simple context factory producing single program contexts.
+ * @param source sourcecode of a OpenCL program.
+ */
+ public static CLSimpleContextFactory createSimple(String source) {
+ return new CLSimpleContextFactory(source);
+ }
+
+ public static class CLSimpleContextFactory extends CLQueueContextFactory<CLQueueContext.CLSimpleQueueContext> {
+
+ private final String source;
+
+ public CLSimpleContextFactory(String source) {
+ this.source = source;
+ }
+
+ @Override
+ public CLQueueContext.CLSimpleQueueContext setup(CLCommandQueue queue, CLQueueContext old) {
+ CLProgram program = queue.getContext().createProgram(source).build(queue.getDevice());
+ return new CLQueueContext.CLSimpleQueueContext(queue, program);
+ }
+
+ }
+
+}