Lines Matching full:mtls
251 MTLaunchStruct *mtls = (MTLaunchStruct *)usr;
254 p.usr = mtls->usr;
255 p.usr_len = mtls->usrLen;
256 RsdHal * dc = (RsdHal *)mtls->rsc->mHal.drv;
257 uint32_t sig = mtls->sig;
259 outer_foreach_t fn = (outer_foreach_t) mtls->kernel;
261 uint32_t slice = (uint32_t)android_atomic_inc(&mtls->mSliceNum);
262 uint32_t yStart = mtls->yStart + slice * mtls->mSliceSize;
263 uint32_t yEnd = yStart + mtls->mSliceSize;
264 yEnd = rsMin(yEnd, mtls->yEnd);
269 //ALOGE("usr idx %i, x %i,%i y %i,%i", idx, mtls->xStart, mtls->xEnd, yStart, yEnd);
270 //ALOGE("usr ptr in %p, out %p", mtls->ptrIn, mtls->ptrOut);
272 p.out = mtls->ptrOut + (mtls->yStrideOut * p.y);
273 p.in = mtls->ptrIn + (mtls->yStrideIn * p.y);
274 fn(&p, mtls->xStart, mtls->xEnd, mtls->eStrideIn, mtls->eStrideOut);
280 MTLaunchStruct *mtls = (MTLaunchStruct *)usr;
283 p.usr = mtls->usr;
284 p.usr_len = mtls->usrLen;
285 RsdHal * dc = (RsdHal *)mtls->rsc->mHal.drv;
286 uint32_t sig = mtls->sig;
288 outer_foreach_t fn = (outer_foreach_t) mtls->kernel;
290 uint32_t slice = (uint32_t)android_atomic_inc(&mtls->mSliceNum);
291 uint32_t xStart = mtls->xStart + slice * mtls->mSliceSize;
292 uint32_t xEnd = xStart + mtls->mSliceSize;
293 xEnd = rsMin(xEnd, mtls->xEnd);
299 //ALOGE("usr ptr in %p, out %p", mtls->ptrIn, mtls->ptrOut);
301 p.out = mtls->ptrOut + (mtls->eStrideOut * xStart);
302 p.in = mtls->ptrIn + (mtls->eStrideIn * xStart);
303 fn(&p, xStart, xEnd, mtls->eStrideIn, mtls->eStrideOut);
318 MTLaunchStruct mtls;
319 memset(&mtls, 0, sizeof(mtls));
322 mtls.kernel = drv->mForEachFunctions[slot];
323 rsAssert(mtls.kernel != NULL);
324 mtls.sig = 0x1f; // temp fix for old apps, full table in slang_rs_export_foreach.cpp
326 mtls.sig = drv->mExportForEachSignatureList[slot];
329 mtls.dimX = ain->getType()->getDimX();
330 mtls.dimY = ain->getType()->getDimY();
331 mtls.dimZ = ain->getType()->getDimZ();
332 //mtls.dimArray = ain->getType()->getDimArray();
334 mtls.dimX = aout->getType()->getDimX();
335 mtls.dimY = aout->getType()->getDimY();
336 mtls.dimZ = aout->getType()->getDimZ();
337 //mtls.dimArray = aout->getType()->getDimArray();
344 mtls.xEnd = mtls.dimX;
346 rsAssert(sc->xStart < mtls.dimX);
347 rsAssert(sc->xEnd <= mtls.dimX);
349 mtls.xStart = rsMin(mtls.dimX, sc->xStart);
350 mtls.xEnd = rsMin(mtls.dimX, sc->xEnd);
351 if (mtls.xStart >= mtls.xEnd) return;
355 mtls.yEnd = mtls.dimY;
357 rsAssert(sc->yStart < mtls.dimY);
358 rsAssert(sc->yEnd <= mtls.dimY);
360 mtls.yStart = rsMin(mtls.dimY, sc->yStart);
361 mtls.yEnd = rsMin(mtls.dimY, sc->yEnd);
362 if (mtls.yStart >= mtls.yEnd) return;
365 mtls.xEnd = rsMax((uint32_t)1, mtls.xEnd);
366 mtls.yEnd = rsMax((uint32_t)1, mtls.yEnd);
367 mtls.zEnd = rsMax((uint32_t)1, mtls.zEnd);
368 mtls.arrayEnd = rsMax((uint32_t)1, mtls.arrayEnd);
375 mtls.rsc = mrsc;
376 mtls.ain = ain;
377 mtls.aout = aout;
378 mtls.script = s;
379 mtls.usr = usr;
380 mtls.usrLen = usrLen;
381 mtls.mSliceSize = 10;
382 mtls.mSliceNum = 0;
384 mtls.ptrIn = NULL;
385 mtls.eStrideIn = 0;
387 mtls.ptrIn = (const uint8_t *)ain->getPtr();
388 mtls.eStrideIn = ain->getType()->getElementSizeBytes();
389 mtls.yStrideIn = ain->mHal.drvState.stride;
392 mtls.ptrOut = NULL;
393 mtls.eStrideOut = 0;
395 mtls.ptrOut = (uint8_t *)aout->getPtr();
396 mtls.eStrideOut = aout->getType()->getElementSizeBytes();
397 mtls.yStrideOut = aout->mHal.drvState.stride;
402 if (mtls.dimY > 1) {
403 rsdLaunchThreads(mrsc, wc_xy, &mtls);
405 rsdLaunchThreads(mrsc, wc_x, &mtls);
413 p.usr = mtls.usr;
414 p.usr_len = mtls.usrLen;
415 uint32_t sig = mtls.sig;
418 outer_foreach_t fn = (outer_foreach_t) mtls.kernel;
419 for (p.ar[0] = mtls.arrayStart; p.ar[0] < mtls.arrayEnd; p.ar[0]++) {
420 for (p.z = mtls.zStart; p.z < mtls.zEnd; p.z++) {
421 for (p.y = mtls.yStart; p.y < mtls.yEnd; p.y++) {
422 uint32_t offset = mtls.dimX * mtls.dimY * mtls.dimZ * p.ar[0] +
423 mtls.dimX * mtls.dimY * p.z +
424 mtls.dimX * p.y;
425 p.out = mtls.ptrOut + (mtls.eStrideOut * offset);
426 p.in = mtls.ptrIn + (mtls.eStrideIn * offset);
427 fn(&p, mtls.xStart, mtls.xEnd, mtls.eStrideIn,
428 mtls.eStrideOut);