summaryrefslogtreecommitdiffstats
path: root/libs/rs/rsScript.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/rs/rsScript.h')
-rw-r--r--libs/rs/rsScript.h47
1 files changed, 26 insertions, 21 deletions
diff --git a/libs/rs/rsScript.h b/libs/rs/rsScript.h
index 5f4a536..c73bb5e 100644
--- a/libs/rs/rsScript.h
+++ b/libs/rs/rsScript.h
@@ -27,9 +27,7 @@ namespace renderscript {
class ProgramVertex;
class ProgramFragment;
class ProgramRaster;
-class ProgramFragmentStore;
-
-#define MAX_SCRIPT_BANKS 16
+class ProgramStore;
class Script : public ObjectBase
{
@@ -39,38 +37,45 @@ public:
Script(Context *);
virtual ~Script();
-
struct Enviroment_t {
- bool mIsRoot;
- float mClearColor[4];
- float mClearDepth;
- uint32_t mClearStencil;
-
- uint32_t mStartTimeMillis;
+ int64_t mStartTimeMillis;
+ int64_t mLastDtTime;
const char* mTimeZone;
ObjectBaseRef<ProgramVertex> mVertex;
ObjectBaseRef<ProgramFragment> mFragment;
ObjectBaseRef<ProgramRaster> mRaster;
- ObjectBaseRef<ProgramFragmentStore> mFragmentStore;
- InvokeFunc_t mInvokables[MAX_SCRIPT_BANKS];
+ ObjectBaseRef<ProgramStore> mFragmentStore;
+
+ uint32_t mInvokeFunctionCount;
+ InvokeFunc_t *mInvokeFunctions;
+ uint32_t mFieldCount;
+ void ** mFieldAddress;
+
char * mScriptText;
uint32_t mScriptTextLength;
+
+ bool mIsThreadable;
};
Enviroment_t mEnviroment;
- uint32_t mCounstantBufferCount;
-
-
- ObjectBaseRef<Allocation> mSlots[MAX_SCRIPT_BANKS];
- ObjectBaseRef<const Type> mTypes[MAX_SCRIPT_BANKS];
- String8 mSlotNames[MAX_SCRIPT_BANKS];
- bool mSlotWritable[MAX_SCRIPT_BANKS];
+ void initSlots();
+ void setSlot(uint32_t slot, Allocation *a);
+ void setVar(uint32_t slot, const void *val, uint32_t len);
+ virtual void runForEach(Context *rsc,
+ const Allocation * ain,
+ Allocation * aout,
+ const void * usr,
+ const RsScriptCall *sc = NULL) = 0;
+ virtual void Invoke(Context *rsc, uint32_t slot, const void *data, uint32_t len) = 0;
+ virtual void setupScript(Context *rsc) = 0;
+ virtual uint32_t run(Context *) = 0;
+protected:
+ ObjectBaseRef<Allocation> *mSlots;
+ ObjectBaseRef<const Type> *mTypes;
- virtual void setupScript() = 0;
- virtual uint32_t run(Context *, uint32_t launchID) = 0;
};