diff options
Diffstat (limited to 'cpu_ref/rsCpuScriptGroup.cpp')
| -rw-r--r-- | cpu_ref/rsCpuScriptGroup.cpp | 58 |
1 files changed, 33 insertions, 25 deletions
diff --git a/cpu_ref/rsCpuScriptGroup.cpp b/cpu_ref/rsCpuScriptGroup.cpp index 4eb9e9d9..1d26f59d 100644 --- a/cpu_ref/rsCpuScriptGroup.cpp +++ b/cpu_ref/rsCpuScriptGroup.cpp @@ -126,11 +126,11 @@ void CpuScriptGroupImpl::scriptGroupRoot(const RsExpandKernelParams *kparams, void CpuScriptGroupImpl::execute() { - Vector<Allocation *> ins; - Vector<bool> inExts; - Vector<Allocation *> outs; - Vector<bool> outExts; - Vector<const ScriptKernelID *> kernels; + std::vector<Allocation *> ins; + std::vector<char> inExts; + std::vector<Allocation *> outs; + std::vector<char> outExts; + std::vector<const ScriptKernelID *> kernels; bool fieldDep = false; for (size_t ct=0; ct < mSG->mNodes.size(); ct++) { @@ -196,11 +196,11 @@ void CpuScriptGroupImpl::execute() { rsAssert((k->mHasKernelOutput == (aout != NULL)) && (k->mHasKernelInput == (ain != NULL))); - ins.add(ain); - inExts.add(inExt); - outs.add(aout); - outExts.add(outExt); - kernels.add(k); + ins.push_back(ain); + inExts.push_back(inExt); + outs.push_back(aout); + outExts.push_back(outExt); + kernels.push_back(k); } } @@ -237,10 +237,16 @@ void CpuScriptGroupImpl::execute() { } } else { ScriptList sl; - sl.ins = ins.array(); - sl.outs = outs.array(); - sl.kernels = kernels.array(); - sl.count = kernels.size(); + + /* + * TODO: This is a hacky way of doing this and should be replaced by a + * call to std::vector's data() member once we have a C++11 + * version of the STL. + */ + sl.ins = &ins.front(); + sl.outs = &outs.front(); + sl.kernels = &kernels.front(); + sl.count = kernels.size(); uint32_t inLen; const Allocation **ains; @@ -254,25 +260,27 @@ void CpuScriptGroupImpl::execute() { ains = const_cast<const Allocation**>(&ins[0]); } - Vector<const void *> usrPtrs; - Vector<const void *> fnPtrs; - Vector<uint32_t> sigs; + std::vector<const void *> usrPtrs; + std::vector<const void *> fnPtrs; + std::vector<uint32_t> sigs; for (size_t ct=0; ct < kernels.size(); ct++) { Script *s = kernels[ct]->mScript; RsdCpuScriptImpl *si = (RsdCpuScriptImpl *)mCtx->lookupScript(s); si->forEachKernelSetup(kernels[ct]->mSlot, &mtls); - fnPtrs.add((void *)mtls.kernel); - usrPtrs.add(mtls.fep.usr); - sigs.add(mtls.fep.usrLen); + fnPtrs.push_back((void *)mtls.kernel); + usrPtrs.push_back(mtls.fep.usr); + sigs.push_back(mtls.fep.usrLen); si->preLaunch(kernels[ct]->mSlot, ains, inLen, outs[ct], mtls.fep.usr, mtls.fep.usrLen, NULL); } - sl.sigs = sigs.array(); - sl.usrPtrs = usrPtrs.array(); - sl.fnPtrs = fnPtrs.array(); - sl.inExts = inExts.array(); - sl.outExts = outExts.array(); + + sl.sigs = &sigs.front(); + sl.usrPtrs = &usrPtrs.front(); + sl.fnPtrs = &fnPtrs.front(); + + sl.inExts = (bool*)&inExts.front(); + sl.outExts = (bool*)&outExts.front(); Script *s = kernels[0]->mScript; RsdCpuScriptImpl *si = (RsdCpuScriptImpl *)mCtx->lookupScript(s); |
