summaryrefslogtreecommitdiff
path: root/libs/rs/rsScriptC.cpp
diff options
context:
space:
mode:
author Jason Sams <rjsams@android.com> 2010-08-11 13:26:28 -0700
committer Jason Sams <rjsams@android.com> 2010-08-12 12:49:31 -0700
commit2cbd298f390a8a944892198efdb25d81f07de3ae (patch)
tree520f70bbf8cce3cba00c02ab8e184fe950b3ffa9 /libs/rs/rsScriptC.cpp
parentee73498ddf896f6ed003e9ce1fab87aefda90173 (diff)
Thread launch strategies.
Change-Id: I506df786e815205a8e51906c2b517302c1ef2471
Diffstat (limited to 'libs/rs/rsScriptC.cpp')
-rw-r--r--libs/rs/rsScriptC.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp
index 7c7b03739e82..a140e224a3f9 100644
--- a/libs/rs/rsScriptC.cpp
+++ b/libs/rs/rsScriptC.cpp
@@ -278,7 +278,7 @@ void ScriptC::runForEach(Context *rsc,
}
- if ((rsc->getWorkerPoolSize() > 1) &&
+ if ((rsc->getWorkerPoolSize() > 1) && mEnviroment.mIsThreadable &&
((mtls.dimY * mtls.dimZ * mtls.dimArray) > 1)) {
//LOGE("launch 1");
@@ -350,10 +350,12 @@ void ScriptCState::clear()
static BCCvoid* symbolLookup(BCCvoid* pContext, const BCCchar* name)
{
const ScriptCState::SymbolTable_t *sym;
+ ScriptC *s = (ScriptC *)pContext;
sym = ScriptCState::lookupSymbol(name);
if (sym) {
return sym->mPtr;
}
+ s->mEnviroment.mIsThreadable = false;
sym = ScriptCState::lookupSymbolCL(name);
if (sym) {
return sym->mPtr;
@@ -371,8 +373,9 @@ void ScriptCState::runCompiler(Context *rsc, ScriptC *s)
LOGV("ScriptCState::runCompiler ");
s->mBccScript = bccCreateScript();
+ s->mEnviroment.mIsThreadable = true;
bccScriptBitcode(s->mBccScript, s->mEnviroment.mScriptText, s->mEnviroment.mScriptTextLength);
- bccRegisterSymbolCallback(s->mBccScript, symbolLookup, NULL);
+ bccRegisterSymbolCallback(s->mBccScript, symbolLookup, s);
bccCompileScript(s->mBccScript);
bccGetScriptLabel(s->mBccScript, "root", (BCCvoid**) &s->mProgram.mRoot);
bccGetScriptLabel(s->mBccScript, "init", (BCCvoid**) &s->mProgram.mInit);