Loading libs/rs/driver/rsdBcc.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ using namespace android::renderscript; struct DrvScript { int (*mRoot)(); void (*mInit)(); void (*mFreeChildren)(); BCCScriptRef mBccScript; Loading Loading @@ -125,6 +126,7 @@ bool rsdScriptInit(const Context *rsc, drv->mRoot = reinterpret_cast<int (*)()>(bccGetFuncAddr(drv->mBccScript, "root")); drv->mInit = reinterpret_cast<void (*)()>(bccGetFuncAddr(drv->mBccScript, "init")); drv->mFreeChildren = reinterpret_cast<void (*)()>(bccGetFuncAddr(drv->mBccScript, ".rs.dtor")); exportFuncCount = drv->ME->getExportFuncCount(); if (exportFuncCount > 0) { Loading Loading @@ -430,6 +432,13 @@ void rsdScriptInvokeInit(const Context *dc, Script *script) { } } void rsdScriptInvokeFreeChildren(const Context *dc, Script *script) { DrvScript *drv = (DrvScript *)script->mHal.drv; if (drv->mFreeChildren) { drv->mFreeChildren(); } } void rsdScriptInvokeFunction(const Context *dc, Script *script, uint32_t slot, Loading libs/rs/driver/rsdBcc.h +2 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,8 @@ int rsdScriptInvokeRoot(const android::renderscript::Context *dc, android::renderscript::Script *script); void rsdScriptInvokeInit(const android::renderscript::Context *dc, android::renderscript::Script *script); void rsdScriptInvokeFreeChildren(const android::renderscript::Context *dc, android::renderscript::Script *script); void rsdScriptSetGlobalVar(const android::renderscript::Context *, const android::renderscript::Script *, Loading libs/rs/driver/rsdCore.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ static RsdHalFunctions FunctionTable = { rsdScriptInvokeRoot, rsdScriptInvokeForEach, rsdScriptInvokeInit, rsdScriptInvokeFreeChildren, rsdScriptSetGlobalVar, rsdScriptSetGlobalBind, rsdScriptSetGlobalObj, Loading libs/rs/rsScript.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,12 @@ void Script::setVarObj(uint32_t slot, ObjectBase *val) { mRSC->mHal.funcs.script.setGlobalObj(mRSC, this, slot, val); } bool Script::freeChildren() { incSysRef(); mRSC->mHal.funcs.script.invokeFreeChildren(mRSC, this); return decSysRef(); } namespace android { namespace renderscript { Loading libs/rs/rsScript.h +2 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,8 @@ public: void setVar(uint32_t slot, const void *val, size_t len); void setVarObj(uint32_t slot, ObjectBase *val); virtual bool freeChildren(); virtual void runForEach(Context *rsc, const Allocation * ain, Allocation * aout, Loading Loading
libs/rs/driver/rsdBcc.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ using namespace android::renderscript; struct DrvScript { int (*mRoot)(); void (*mInit)(); void (*mFreeChildren)(); BCCScriptRef mBccScript; Loading Loading @@ -125,6 +126,7 @@ bool rsdScriptInit(const Context *rsc, drv->mRoot = reinterpret_cast<int (*)()>(bccGetFuncAddr(drv->mBccScript, "root")); drv->mInit = reinterpret_cast<void (*)()>(bccGetFuncAddr(drv->mBccScript, "init")); drv->mFreeChildren = reinterpret_cast<void (*)()>(bccGetFuncAddr(drv->mBccScript, ".rs.dtor")); exportFuncCount = drv->ME->getExportFuncCount(); if (exportFuncCount > 0) { Loading Loading @@ -430,6 +432,13 @@ void rsdScriptInvokeInit(const Context *dc, Script *script) { } } void rsdScriptInvokeFreeChildren(const Context *dc, Script *script) { DrvScript *drv = (DrvScript *)script->mHal.drv; if (drv->mFreeChildren) { drv->mFreeChildren(); } } void rsdScriptInvokeFunction(const Context *dc, Script *script, uint32_t slot, Loading
libs/rs/driver/rsdBcc.h +2 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,8 @@ int rsdScriptInvokeRoot(const android::renderscript::Context *dc, android::renderscript::Script *script); void rsdScriptInvokeInit(const android::renderscript::Context *dc, android::renderscript::Script *script); void rsdScriptInvokeFreeChildren(const android::renderscript::Context *dc, android::renderscript::Script *script); void rsdScriptSetGlobalVar(const android::renderscript::Context *, const android::renderscript::Script *, Loading
libs/rs/driver/rsdCore.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ static RsdHalFunctions FunctionTable = { rsdScriptInvokeRoot, rsdScriptInvokeForEach, rsdScriptInvokeInit, rsdScriptInvokeFreeChildren, rsdScriptSetGlobalVar, rsdScriptSetGlobalBind, rsdScriptSetGlobalObj, Loading
libs/rs/rsScript.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,12 @@ void Script::setVarObj(uint32_t slot, ObjectBase *val) { mRSC->mHal.funcs.script.setGlobalObj(mRSC, this, slot, val); } bool Script::freeChildren() { incSysRef(); mRSC->mHal.funcs.script.invokeFreeChildren(mRSC, this); return decSysRef(); } namespace android { namespace renderscript { Loading
libs/rs/rsScript.h +2 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,8 @@ public: void setVar(uint32_t slot, const void *val, size_t len); void setVarObj(uint32_t slot, ObjectBase *val); virtual bool freeChildren(); virtual void runForEach(Context *rsc, const Allocation * ain, Allocation * aout, Loading