diff options
| author | Jason Sams <jsams@google.com> | 2012-09-17 13:54:41 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-09-17 15:26:27 -0700 |
| commit | dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48 (patch) | |
| tree | 51103b76560e70b15b55d123f0104a0bea6dd94a /rsScriptGroup.h | |
| parent | 3d5a9be726acf2b7785e91f6bff157c2c8635690 (diff) | |
| download | android_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.h | 114 |
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 + |
