rsScriptGroup2.h revision eb9aa675754c49f613c6ad71d41472b30f38b007
11ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni#ifndef ANDROID_RENDERSCRIPT_SCRIPTGROUP2_H_
21ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni#define ANDROID_RENDERSCRIPT_SCRIPTGROUP2_H_
31ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni
41ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni#include "rsScriptGroupBase.h"
51ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni
61ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni#include <list>
7da0f069871343119251d6b0586be356dc2146a62Yang Ni#include <string>
81ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni
91ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ninamespace android {
101ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ninamespace renderscript {
111ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni
121ffd86b448d78366190c540f98f8b6d641cdb6cfYang Niclass Closure;
131ffd86b448d78366190c540f98f8b6d641cdb6cfYang Niclass Context;
141ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni
151ffd86b448d78366190c540f98f8b6d641cdb6cfYang Niclass ScriptGroup2 : public ScriptGroupBase {
161ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni public:
17eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni    /*
18eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni      TODO:
19eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni      Inputs and outputs are set and retrieved in Java runtime.
20eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni      They are opaque in the C++ runtime.
21eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni      For better compiler optimizations (of a script group), we need to include
22eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni      input and output information in the C++ runtime.
23eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni    */
24eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni    ScriptGroup2(Context* rsc, const char* cacheDir, Closure** closures,
25eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni                 size_t numClosures) :
26eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni        ScriptGroupBase(rsc), mCacheDir(cacheDir),
27eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni        mClosures(closures, closures + numClosures) {}
28eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni    virtual ~ScriptGroup2() {}
29eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni
30eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni    virtual SG_API_Version getApiVersion() const { return SG_V2; }
31eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni    virtual void execute(Context* rsc);
32eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni
33eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni    const std::string mCacheDir;
34eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni    std::list<Closure*> mClosures;
351ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni};
361ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni
371ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni}  // namespace renderscript
381ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni}  // namespace android
391ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni
401ffd86b448d78366190c540f98f8b6d641cdb6cfYang Ni#endif  // ANDROID_RENDERSCRIPT_SCRIPTGROUP2_H_
41