diff options
| author | 2010-08-11 13:26:28 -0700 | |
|---|---|---|
| committer | 2010-08-12 12:49:31 -0700 | |
| commit | 2cbd298f390a8a944892198efdb25d81f07de3ae (patch) | |
| tree | 520f70bbf8cce3cba00c02ab8e184fe950b3ffa9 /libs/rs/rsScriptC.cpp | |
| parent | ee73498ddf896f6ed003e9ce1fab87aefda90173 (diff) | |
Thread launch strategies.
Change-Id: I506df786e815205a8e51906c2b517302c1ef2471
Diffstat (limited to 'libs/rs/rsScriptC.cpp')
| -rw-r--r-- | libs/rs/rsScriptC.cpp | 7 |
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); |