diff options
author | Jason Sams <rjsams@android.com> | 2009-06-10 15:04:38 -0700 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2009-06-10 15:04:38 -0700 |
commit | 3eaa338e11a3b0d6b87d705e5bb95625e82347bd (patch) | |
tree | f0e91b1fbf362b86b54d84325581f7544536a38c /libs/rs/rsScriptC.cpp | |
parent | da423d8479a2cefb456a03d7dc550e74e473acf4 (diff) |
Add named objects and implement support for ProgramFragmentStore and ProgramFragment to be used by name in scripts.
Diffstat (limited to 'libs/rs/rsScriptC.cpp')
-rw-r--r-- | libs/rs/rsScriptC.cpp | 106 |
1 files changed, 21 insertions, 85 deletions
diff --git a/libs/rs/rsScriptC.cpp b/libs/rs/rsScriptC.cpp index 49d787297d1b..ae58e5f14b28 100644 --- a/libs/rs/rsScriptC.cpp +++ b/libs/rs/rsScriptC.cpp @@ -390,6 +390,14 @@ static rsc_FunctionTable scriptCPtrTable = { bool ScriptC::run(Context *rsc, uint32_t launchID) { Env e = {rsc, this}; + + if (mEnviroment.mFragmentStore.get()) { + rsc->setFragmentStore(mEnviroment.mFragmentStore.get()); + } + if (mEnviroment.mFragment.get()) { + rsc->setFragment(mEnviroment.mFragment.get()); + } + return mProgram.mScript(&e, &scriptCPtrTable, launchID) != 0; } @@ -425,7 +433,7 @@ void ScriptCState::clear() } -void ScriptCState::runCompiler() +void ScriptCState::runCompiler(Context *rsc) { mAccScript = accCreateScript(); @@ -442,16 +450,6 @@ void ScriptCState::runCompiler() ACCchar * str[pragmaMax]; accGetPragmas(mAccScript, &pragmaCount, pragmaMax, &str[0]); - // Start with defaults - mEnviroment.mStateVertex = - Script::Enviroment_t::VTX_ORTHO_WINDOW; - mEnviroment.mStateRaster = - Script::Enviroment_t::RASTER_FLAT; - mEnviroment.mStateFragment = - Script::Enviroment_t::FRAGMENT_COLOR; - mEnviroment.mStateFragmentStore = - Script::Enviroment_t::FRAGMENT_STORE_ALWAYS_REPLACE; - for (int ct=0; ct < pragmaCount; ct+=2) { LOGE("pragma %i %s %s", ct, str[ct], str[ct+1]); @@ -462,96 +460,34 @@ void ScriptCState::runCompiler() if (!strcmp(str[ct], "stateVertex")) { - if (!strcmp(str[ct+1], "orthoWindow")) { - mEnviroment.mStateVertex = - Script::Enviroment_t::VTX_ORTHO_WINDOW; - continue; - } - if (!strcmp(str[ct+1], "orthoNormalized")) { - mEnviroment.mStateVertex = - Script::Enviroment_t::VTX_ORTHO_NORMALIZED; - continue; - } - if (!strcmp(str[ct+1], "projection")) { - mEnviroment.mStateVertex = - Script::Enviroment_t::VTX_PROJECTION; - continue; - } - if (!strcmp(str[ct+1], "parent")) { - mEnviroment.mStateVertex = - Script::Enviroment_t::VTX_PARENT; - continue; - } LOGE("Unreconized value %s passed to stateVertex", str[ct+1]); } if (!strcmp(str[ct], "stateRaster")) { - if (!strcmp(str[ct+1], "flat")) { - mEnviroment.mStateRaster = - Script::Enviroment_t::RASTER_FLAT; - continue; - } - if (!strcmp(str[ct+1], "smooth")) { - mEnviroment.mStateRaster = - Script::Enviroment_t::RASTER_SMOOTH; - continue; - } - if (!strcmp(str[ct+1], "parent")) { - mEnviroment.mStateRaster = - Script::Enviroment_t::RASTER_PARENT; - continue; - } LOGE("Unreconized value %s passed to stateRaster", str[ct+1]); } if (!strcmp(str[ct], "stateFragment")) { - if (!strcmp(str[ct+1], "color")) { - mEnviroment.mStateFragment = - Script::Enviroment_t::FRAGMENT_COLOR; - continue; - } - if (!strcmp(str[ct+1], "texReplace")) { - mEnviroment.mStateFragment = - Script::Enviroment_t::FRAGMENT_TEX_REPLACE; - continue; - } - if (!strcmp(str[ct+1], "texModulate")) { - mEnviroment.mStateFragment = - Script::Enviroment_t::FRAGMENT_TEX_MODULATE; - continue; - } - if (!strcmp(str[ct+1], "parent")) { - mEnviroment.mStateFragment = - Script::Enviroment_t::FRAGMENT_PARENT; + ProgramFragment * pf = + (ProgramFragment *)rsc->lookupName(str[ct+1]); + if (pf != NULL) { + mEnviroment.mFragment.set(pf); continue; } LOGE("Unreconized value %s passed to stateFragment", str[ct+1]); } if (!strcmp(str[ct], "stateFragmentStore")) { - if (!strcmp(str[ct+1], "alwaysReplace")) { - mEnviroment.mStateFragmentStore = - Script::Enviroment_t::FRAGMENT_STORE_ALWAYS_REPLACE; - continue; - } - if (!strcmp(str[ct+1], "alwaysBlend")) { - mEnviroment.mStateFragmentStore = - Script::Enviroment_t::FRAGMENT_STORE_ALWAYS_BLEND; - continue; - } - if (!strcmp(str[ct+1], "depthLessReplace")) { - mEnviroment.mStateFragmentStore = - Script::Enviroment_t::FRAGMENT_STORE_DEPTH_LESS_REPLACE; - continue; - } - if (!strcmp(str[ct+1], "depthLessBlend")) { - mEnviroment.mStateFragmentStore = - Script::Enviroment_t::FRAGMENT_STORE_DEPTH_LESS_BLEND; + ProgramFragmentStore * pfs = + (ProgramFragmentStore *)rsc->lookupName(str[ct+1]); + if (pfs != NULL) { + mEnviroment.mFragmentStore.set(pfs); continue; } + if (!strcmp(str[ct+1], "parent")) { - mEnviroment.mStateFragmentStore = - Script::Enviroment_t::FRAGMENT_STORE_PARENT; + //mEnviroment.mStateFragmentStore = + //Script::Enviroment_t::FRAGMENT_STORE_PARENT; continue; } LOGE("Unreconized value %s passed to stateFragmentStore", str[ct+1]); @@ -632,7 +568,7 @@ RsScript rsi_ScriptCCreate(Context * rsc) { ScriptCState *ss = &rsc->mScriptC; - ss->runCompiler(); + ss->runCompiler(rsc); ScriptC *s = new ScriptC(); s->incRef(); |