static void AllocationGenerateScriptMips(RsContext con, RsAllocation va) { Context *rsc = static_cast<Context *>(con); Allocation *texAlloc = static_cast<Allocation *>(va); uint32_t numFaces = texAlloc->getType()->getDimFaces() ? 6 : 1; for (uint32_t face = 0; face < numFaces; face ++) { Adapter2D adapt(rsc, texAlloc); Adapter2D adapt2(rsc, texAlloc); adapt.setFace(face); adapt2.setFace(face); for (uint32_t lod=0; lod < (texAlloc->getType()->getLODCount() -1); lod++) { adapt.setLOD(lod); adapt2.setLOD(lod + 1); mip(adapt2, adapt); } } }
void rsi_AllocationRead(Context *rsc, RsAllocation va, void *data, size_t sizeBytes) { Allocation *a = static_cast<Allocation *>(va); const Type * t = a->getType(); if(t->getDimY()) { a->read(rsc, 0, 0, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X, t->getDimX(), t->getDimY(), data, sizeBytes, 0); } else { a->read(rsc, 0, 0, t->getDimX(), data, sizeBytes); } }
void rsi_AllocationCopyToBitmap(Context *rsc, RsAllocation va, void *data, size_t dataLen) { Allocation *texAlloc = static_cast<Allocation *>(va); const Type * t = texAlloc->getType(); size_t s = t->getDimX() * t->getDimY() * t->getElementSizeBytes(); if (s != dataLen) { rsc->setError(RS_ERROR_BAD_VALUE, "Bitmap size didn't match allocation size"); return; } memcpy(data, texAlloc->getPtr(), s); }
extern "C" const void * rsaAllocationGetType(RsContext con, RsAllocation va) { Allocation *a = static_cast<Allocation *>(va); a->getType()->incUserRef(); return a->getType(); }