summaryrefslogtreecommitdiffstats
path: root/rsScriptGroup.h
diff options
context:
space:
mode:
authorJason Sams <jsams@google.com>2012-09-17 13:54:41 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-09-17 15:26:27 -0700
commitdbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48 (patch)
tree51103b76560e70b15b55d123f0104a0bea6dd94a /rsScriptGroup.h
parent3d5a9be726acf2b7785e91f6bff157c2c8635690 (diff)
downloadandroid_frameworks_rs-dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48.tar.gz
android_frameworks_rs-dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48.tar.bz2
android_frameworks_rs-dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48.zip
Add backed for script groups.
Change-Id: If2fdbde7381fcdaeb54d41a913b855fd83d4f186
Diffstat (limited to 'rsScriptGroup.h')
-rw-r--r--rsScriptGroup.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/rsScriptGroup.h b/rsScriptGroup.h
new file mode 100644
index 00000000..d51b1db6
--- /dev/null
+++ b/rsScriptGroup.h
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ANDROID_RS_SCRIPT_GROUP_H
+#define ANDROID_RS_SCRIPT_GROUP_H
+
+#include "rsAllocation.h"
+#include "rsScript.h"
+
+
+// ---------------------------------------------------------------------------
+namespace android {
+namespace renderscript {
+
+class ProgramVertex;
+class ProgramFragment;
+class ProgramRaster;
+class ProgramStore;
+
+class ScriptGroup : public ObjectBase {
+public:
+ Vector<ObjectBaseRef<ScriptKernelID> > mKernels;
+
+ class Link {
+ public:
+ ObjectBaseRef<const ScriptKernelID> mSource;
+ ObjectBaseRef<const ScriptKernelID> mDstKernel;
+ ObjectBaseRef<const ScriptFieldID> mDstField;
+ ObjectBaseRef<const Type> mType;
+ ObjectBaseRef<Allocation> mAlloc;
+ Link();
+ ~Link();
+ };
+
+ class Node {
+ public:
+ Node(Script *);
+
+ Vector<const ScriptKernelID *> mKernels;
+ Vector<Link *> mOutputs;
+ Vector<Link *> mInputs;
+ bool mSeen;
+ int mOrder;
+ Script *mScript;
+ };
+
+ class IO {
+ public:
+ IO(const ScriptKernelID *);
+
+ const ScriptKernelID *mKernel;
+ ObjectBaseRef<Allocation> mAlloc;
+ };
+
+ Vector<Link *> mLinks;
+ Vector<Node *> mNodes;
+ Vector<IO *> mInputs;
+ Vector<IO *> mOutputs;
+
+ struct Hal {
+ void * drv;
+
+ struct DriverInfo {
+ };
+ DriverInfo info;
+ };
+ Hal mHal;
+
+ static ScriptGroup * create(Context *rsc,
+ ScriptKernelID ** kernels, size_t kernelsSize,
+ ScriptKernelID ** src, size_t srcSize,
+ ScriptKernelID ** dstK, size_t dstKSize,
+ ScriptFieldID ** dstF, size_t dstFSize,
+ const Type ** type, size_t typeSize);
+
+ virtual void serialize(Context *rsc, OStream *stream) const;
+ virtual RsA3DClassID getClassId() const;
+
+ void execute(Context *rsc);
+ void setInput(Context *rsc, ScriptKernelID *kid, Allocation *a);
+ void setOutput(Context *rsc, ScriptKernelID *kid, Allocation *a);
+
+
+protected:
+ virtual ~ScriptGroup();
+ bool mInitialized;
+
+
+private:
+ bool calcOrderRecurse(Node *n, int depth);
+ bool calcOrder();
+ Node * findNode(Script *s) const;
+
+ ScriptGroup(Context *);
+};
+
+
+}
+}
+#endif
+