summaryrefslogtreecommitdiff
path: root/cpu_ref/rsCpuScriptGroup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpu_ref/rsCpuScriptGroup.cpp')
-rw-r--r--cpu_ref/rsCpuScriptGroup.cpp58
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);