diff options
author | Joe Onorato <joeo@android.com> | 2009-08-09 22:57:44 -0700 |
---|---|---|
committer | Joe Onorato <joeo@android.com> | 2009-08-09 22:58:20 -0700 |
commit | d7b3774da62d3c70cc7e8cf549967a1c823501e6 (patch) | |
tree | 42fa1d36c3a0d2d07850352758bfc22650d60308 /libs/rs/rsScriptC.cpp | |
parent | 3370ec9e54c373ccca3c4f545b4c96f9419a081d (diff) |
Let java put #defines into renderscript
Diffstat (limited to 'libs/rs/rsScriptC.cpp')
-rw-r--r-- | libs/rs/rsScriptC.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp index efe6ff7f49eb..3343db51af93 100644 --- a/libs/rs/rsScriptC.cpp +++ b/libs/rs/rsScriptC.cpp @@ -104,6 +104,8 @@ void ScriptCState::clear() mAccScript = NULL; + mInt32Defines.clear(); + mFloatDefines.clear(); } static ACCvoid* symbolLookup(ACCvoid* pContext, const ACCchar* name) @@ -123,6 +125,8 @@ void ScriptCState::runCompiler(Context *rsc) rsc->appendNameDefines(&tmp); appendDecls(&tmp); + rsc->appendVarDefines(&tmp); + appendVarDefines(&tmp); tmp.append("#line 1\n"); const char* scriptSource[] = {tmp.string(), mProgram.mScriptText}; @@ -138,7 +142,6 @@ void ScriptCState::runCompiler(Context *rsc) ACCsizei len; accGetScriptInfoLog(mAccScript, sizeof(buf), &len, buf); LOGE(buf); - } mEnviroment.mFragment.set(rsc->getDefaultProgramFragment()); @@ -215,9 +218,31 @@ void ScriptCState::runCompiler(Context *rsc) } else { // Deal with an error. } +} + +void ScriptCState::appendVarDefines(String8 *str) +{ + char buf[256]; + LOGD("appendVarDefines mInt32Defines.size()=%d mFloatDefines.size()=%d\n", + mInt32Defines.size(), mFloatDefines.size()); + for (size_t ct=0; ct < mInt32Defines.size(); ct++) { + str->append("#define "); + str->append(mInt32Defines.keyAt(ct)); + str->append(" "); + sprintf(buf, "%i\n", (int)mInt32Defines.valueAt(ct)); + str->append(buf); + } + for (size_t ct=0; ct < mFloatDefines.size(); ct++) { + str->append("#define "); + str->append(mFloatDefines.keyAt(ct)); + str->append(" "); + sprintf(buf, "%ff\n", mFloatDefines.valueAt(ct)); + str->append(buf); + } } + namespace android { namespace renderscript { @@ -270,6 +295,18 @@ RsScript rsi_ScriptCCreate(Context * rsc) return s; } +void rsi_ScriptCSetDefineF(Context *rsc, const char* name, float value) +{ + ScriptCState *ss = &rsc->mScriptC; + ss->mFloatDefines.add(String8(name), value); +} + +void rsi_ScriptCSetDefineI32(Context *rsc, const char* name, int32_t value) +{ + ScriptCState *ss = &rsc->mScriptC; + ss->mInt32Defines.add(String8(name), value); +} + } } |