Pass RsExpandKernelDriverInfo not RsExpandKernelParams.
Which is to say: retire RsExpandKernelParams and pass RsExpandKernelDriverInfo
directly to kernel wrapper functions instead.
Requires related change in frameworks/compile/libbcc.
Change-Id: I453f45ec18f389e88e27fcfa57ddf245d077cb98
diff --git a/cpu_ref/rsCpuScriptGroup.cpp b/cpu_ref/rsCpuScriptGroup.cpp
index 281a715..82208db 100644
--- a/cpu_ref/rsCpuScriptGroup.cpp
+++ b/cpu_ref/rsCpuScriptGroup.cpp
@@ -42,83 +42,83 @@
}
-typedef void (*ScriptGroupRootFunc_t)(const RsExpandKernelParams *kparams,
+typedef void (*ScriptGroupRootFunc_t)(const RsExpandKernelDriverInfo *kinfo,
uint32_t xstart, uint32_t xend,
uint32_t outstep);
-void CpuScriptGroupImpl::scriptGroupRoot(const RsExpandKernelParams *kparams,
+void CpuScriptGroupImpl::scriptGroupRoot(const RsExpandKernelDriverInfo *kinfo,
uint32_t xstart, uint32_t xend,
uint32_t outstep) {
- const ScriptList *sl = (const ScriptList *)kparams->usr;
- RsExpandKernelParams *mkparams = (RsExpandKernelParams *)kparams;
+ const ScriptList *sl = (const ScriptList *)kinfo->usr;
+ RsExpandKernelDriverInfo *mkinfo = const_cast<RsExpandKernelDriverInfo *>(kinfo);
- const void **oldIns = mkparams->ins;
- uint32_t *oldStrides = mkparams->inEStrides;
-
- void *localIns[1];
- uint32_t localStride[1];
-
- mkparams->ins = (const void**)localIns;
- mkparams->inEStrides = localStride;
+ const uint32_t oldInStride = mkinfo->inStride[0];
for (size_t ct = 0; ct < sl->count; ct++) {
ScriptGroupRootFunc_t func;
func = (ScriptGroupRootFunc_t)sl->fnPtrs[ct];
- mkparams->usr = sl->usrPtrs[ct];
+ mkinfo->usr = sl->usrPtrs[ct];
if (sl->ins[ct]) {
- localIns[0] = sl->ins[ct]->mHal.drvState.lod[0].mallocPtr;
+ rsAssert(kinfo->inLen == 1);
- localStride[0] = sl->ins[ct]->mHal.state.elementSizeBytes;
+ mkinfo->inPtr[0] = (const uint8_t *)sl->ins[ct]->mHal.drvState.lod[0].mallocPtr;
+
+ mkinfo->inStride[0] = sl->ins[ct]->mHal.state.elementSizeBytes;
if (sl->inExts[ct]) {
- localIns[0] = (void*)
- ((const uint8_t *)localIns[0] +
- sl->ins[ct]->mHal.drvState.lod[0].stride * kparams->y);
+ mkinfo->inPtr[0] =
+ (mkinfo->inPtr[0] +
+ sl->ins[ct]->mHal.drvState.lod[0].stride * kinfo->current.y);
- } else if (sl->ins[ct]->mHal.drvState.lod[0].dimY > kparams->lid) {
- localIns[0] = (void*)
- ((const uint8_t *)localIns[0] +
- sl->ins[ct]->mHal.drvState.lod[0].stride * kparams->lid);
+ } else if (sl->ins[ct]->mHal.drvState.lod[0].dimY > kinfo->lid) {
+ mkinfo->inPtr[0] =
+ (mkinfo->inPtr[0] +
+ sl->ins[ct]->mHal.drvState.lod[0].stride * kinfo->lid);
}
} else {
- localIns[0] = nullptr;
- localStride[0] = 0;
+ rsAssert(kinfo->inLen == 0);
+
+ mkinfo->inPtr[0] = nullptr;
+ mkinfo->inStride[0] = 0;
}
uint32_t ostep;
if (sl->outs[ct]) {
- mkparams->out =
+ rsAssert(kinfo->outLen == 1);
+
+ mkinfo->outPtr[0] =
(uint8_t *)sl->outs[ct]->mHal.drvState.lod[0].mallocPtr;
ostep = sl->outs[ct]->mHal.state.elementSizeBytes;
if (sl->outExts[ct]) {
- mkparams->out =
- (uint8_t *)mkparams->out +
- sl->outs[ct]->mHal.drvState.lod[0].stride * kparams->y;
+ mkinfo->outPtr[0] =
+ mkinfo->outPtr[0] +
+ sl->outs[ct]->mHal.drvState.lod[0].stride * kinfo->current.y;
- } else if (sl->outs[ct]->mHal.drvState.lod[0].dimY > kparams->lid) {
- mkparams->out =
- (uint8_t *)mkparams->out +
- sl->outs[ct]->mHal.drvState.lod[0].stride * kparams->lid;
+ } else if (sl->outs[ct]->mHal.drvState.lod[0].dimY > kinfo->lid) {
+ mkinfo->outPtr[0] =
+ mkinfo->outPtr[0] +
+ sl->outs[ct]->mHal.drvState.lod[0].stride * kinfo->lid;
}
} else {
- mkparams->out = nullptr;
- ostep = 0;
+ rsAssert(kinfo->outLen == 0);
+
+ mkinfo->outPtr[0] = nullptr;
+ ostep = 0;
}
//ALOGE("kernel %i %p,%p %p,%p", ct, mp->ptrIn, mp->in, mp->ptrOut, mp->out);
- func(kparams, xstart, xend, ostep);
+ func(kinfo, xstart, xend, ostep);
}
//ALOGE("script group root");
- mkparams->ins = oldIns;
- mkparams->inEStrides = oldStrides;
- mkparams->usr = sl;
+ mkinfo->inStride[0] = oldInStride;
+ mkinfo->usr = sl;
}