123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- /*
- * Copyright (C) 2011-2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #include "../cpu_ref/rsd_cpu.h"
- #include "rsdCore.h"
- #include "rsdBcc.h"
- #include "rsdAllocation.h"
- #include "rsContext.h"
- #include "rsElement.h"
- #include "rsScriptC.h"
- using android::renderscript::Allocation;
- using android::renderscript::Context;
- using android::renderscript::Element;
- using android::renderscript::ObjectBase;
- using android::renderscript::RsdCpuReference;
- using android::renderscript::Script;
- using android::renderscript::ScriptC;
- using android::renderscript::rs_script;
- bool rsdScriptInit(const Context *rsc,
- ScriptC *script,
- char const *resName,
- char const *cacheDir,
- uint8_t const *bitcode,
- size_t bitcodeSize,
- uint32_t flags) {
- RsdHal *dc = (RsdHal *)rsc->mHal.drv;
- RsdCpuReference::CpuScript * cs =
- dc->mCpuRef->createScript(script, resName, cacheDir, bitcode,
- bitcodeSize, flags);
- if (cs == nullptr) {
- return false;
- }
- script->mHal.drv = cs;
- cs->populateScript(script);
- return true;
- }
- bool rsdInitIntrinsic(const Context *rsc, Script *s, RsScriptIntrinsicID iid,
- Element *e) {
- RsdHal *dc = (RsdHal *)rsc->mHal.drv;
- RsdCpuReference::CpuScript * cs = dc->mCpuRef->createIntrinsic(s, iid, e);
- if (cs == nullptr) {
- return false;
- }
- s->mHal.drv = cs;
- cs->populateScript(s);
- return true;
- }
- void rsdScriptInvokeForEach(const Context *rsc,
- Script *s,
- uint32_t slot,
- const Allocation * ain,
- Allocation * aout,
- const void * usr,
- size_t usrLen,
- const RsScriptCall *sc) {
- if (ain == nullptr) {
- rsdScriptInvokeForEachMulti(rsc, s, slot, nullptr, 0, aout, usr, usrLen,
- sc);
- } else {
- const Allocation *ains[1] = {ain};
- rsdScriptInvokeForEachMulti(rsc, s, slot, ains, 1, aout, usr, usrLen,
- sc);
- }
- }
- void rsdScriptInvokeForEachMulti(const Context *rsc,
- Script *s,
- uint32_t slot,
- const Allocation ** ains,
- size_t inLen,
- Allocation * aout,
- const void * usr,
- size_t usrLen,
- const RsScriptCall *sc) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- cs->invokeForEach(slot, ains, inLen, aout, usr, usrLen, sc);
- }
- int rsdScriptInvokeRoot(const Context *dc, Script *s) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- return cs->invokeRoot();
- }
- void rsdScriptInvokeInit(const Context *dc, Script *s) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- cs->invokeInit();
- }
- void rsdScriptInvokeFreeChildren(const Context *dc, Script *s) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- cs->invokeFreeChildren();
- }
- void rsdScriptInvokeFunction(const Context *dc, Script *s,
- uint32_t slot,
- const void *params,
- size_t paramLength) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- cs->invokeFunction(slot, params, paramLength);
- }
- void rsdScriptInvokeReduce(const Context *dc, Script *s,
- uint32_t slot,
- const Allocation ** ains, size_t inLen,
- Allocation *aout,
- const RsScriptCall *sc) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- cs->invokeReduce(slot, ains, inLen, aout, sc);
- }
- void rsdScriptSetGlobalVar(const Context *dc, const Script *s,
- uint32_t slot, void *data, size_t dataLength) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- cs->setGlobalVar(slot, data, dataLength);
- }
- void rsdScriptGetGlobalVar(const Context *dc, const Script *s,
- uint32_t slot, void *data, size_t dataLength) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- cs->getGlobalVar(slot, data, dataLength);
- }
- void rsdScriptSetGlobalVarWithElemDims(const Context *dc, const Script *s,
- uint32_t slot, void *data, size_t dataLength,
- const android::renderscript::Element *elem,
- const uint32_t *dims, size_t dimLength) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- cs->setGlobalVarWithElemDims(slot, data, dataLength, elem, dims, dimLength);
- }
- void rsdScriptSetGlobalBind(const Context *dc, const Script *s, uint32_t slot, Allocation *data) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- cs->setGlobalBind(slot, data);
- }
- void rsdScriptSetGlobalObj(const Context *dc, const Script *s, uint32_t slot, ObjectBase *data) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- cs->setGlobalObj(slot, data);
- }
- void rsdScriptDestroy(const Context *dc, Script *s) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)s->mHal.drv;
- delete cs;
- s->mHal.drv = nullptr;
- }
- Allocation * rsdScriptGetAllocationForPointer(const android::renderscript::Context *dc,
- const android::renderscript::Script *sc,
- const void *ptr) {
- RsdCpuReference::CpuScript *cs = (RsdCpuReference::CpuScript *)sc->mHal.drv;
- return cs->getAllocationForPointer(ptr);
- }
- void rsdScriptUpdateCachedObject(const Context *rsc,
- const Script *script,
- rs_script *obj)
- {
- obj->p = script;
- #ifdef __LP64__
- obj->unused1 = nullptr;
- obj->unused2 = nullptr;
- obj->unused3 = nullptr;
- #endif
- }
|