Lines Matching refs:alloc

82 size_t AllocationBuildPointerTable(const Context *rsc, const Allocation *alloc,
85 alloc->mHal.drvState.lod[0].dimX = type->getDimX();
86 alloc->mHal.drvState.lod[0].dimY = type->getDimY();
87 alloc->mHal.drvState.lod[0].dimZ = type->getDimZ();
88 alloc->mHal.drvState.lod[0].mallocPtr = 0;
91 alloc->mHal.drvState.lod[0].dimX * type->getElementSizeBytes();
92 alloc->mHal.drvState.lod[0].stride = rsRound(stride, requiredAlignment);
93 alloc->mHal.drvState.lodCount = type->getLODCount();
94 alloc->mHal.drvState.faceCount = type->getDimFaces();
99 size_t o = alloc->mHal.drvState.lod[0].stride *
100 rsMax(alloc->mHal.drvState.lod[0].dimY, 1u) *
101 rsMax(alloc->mHal.drvState.lod[0].dimZ, 1u);
102 if (alloc->mHal.state.yuv) {
103 o += DeriveYUVLayout(alloc->mHal.state.yuv, &alloc->mHal.drvState);
105 for (uint32_t ct = 1; ct < alloc->mHal.drvState.lodCount; ct++) {
106 offsets[ct] = (size_t)alloc->mHal.drvState.lod[ct].mallocPtr;
108 } else if (alloc->mHal.drvState.lodCount > 1) {
109 uint32_t tx = alloc->mHal.drvState.lod[0].dimX;
110 uint32_t ty = alloc->mHal.drvState.lod[0].dimY;
111 uint32_t tz = alloc->mHal.drvState.lod[0].dimZ;
112 for (uint32_t lod = 1; lod < alloc->mHal.drvState.lodCount; lod++) {
113 alloc->mHal.drvState.lod[lod].dimX = tx;
114 alloc->mHal.drvState.lod[lod].dimY = ty;
115 alloc->mHal.drvState.lod[lod].dimZ = tz;
116 alloc->mHal.drvState.lod[lod].stride =
119 o += alloc->mHal.drvState.lod[lod].stride * rsMax(ty, 1u) * rsMax(tz, 1u);
126 alloc->mHal.drvState.faceOffset = o;
128 alloc->mHal.drvState.lod[0].mallocPtr = ptr;
129 for (uint32_t lod = 1; lod < alloc->mHal.drvState.lodCount; lod++) {
130 alloc->mHal.drvState.lod[lod].mallocPtr = ptr + offsets[lod];
133 size_t allocSize = alloc->mHal.drvState.faceOffset;
134 if (alloc->mHal.drvState.faceCount) {
141 size_t AllocationBuildPointerTable(const Context *rsc, const Allocation *alloc,
143 return AllocationBuildPointerTable(rsc, alloc, type, ptr,
147 uint8_t *GetOffsetPtr(const Allocation *alloc, uint32_t xoff, uint32_t yoff,
150 uint8_t *ptr = (uint8_t *)alloc->mHal.drvState.lod[lod].mallocPtr;
151 ptr += face * alloc->mHal.drvState.faceOffset;
152 ptr += zoff * alloc->mHal.drvState.lod[lod].dimY *
153 alloc->mHal.drvState.lod[lod].stride;
154 ptr += yoff * alloc->mHal.drvState.lod[lod].stride;
155 ptr += xoff * alloc->mHal.state.elementSizeBytes;
159 void mip565(const Allocation *alloc, int lod, RsAllocationCubemapFace face) {
160 uint32_t w = alloc->mHal.drvState.lod[lod + 1].dimX;
161 uint32_t h = alloc->mHal.drvState.lod[lod + 1].dimY;
164 uint16_t *oPtr = (uint16_t *)GetOffsetPtr(alloc, 0, y, 0, lod + 1, face);
166 (uint16_t *)GetOffsetPtr(alloc, 0, 0, y * 2, lod, face);
168 (uint16_t *)GetOffsetPtr(alloc, 0, 0, y * 2 + 1, lod, face);
179 void mip8888(const Allocation *alloc, int lod, RsAllocationCubemapFace face) {
180 uint32_t w = alloc->mHal.drvState.lod[lod + 1].dimX;
181 uint32_t h = alloc->mHal.drvState.lod[lod + 1].dimY;
184 uint32_t *oPtr = (uint32_t *)GetOffsetPtr(alloc, 0, y, 0, lod + 1, face);
186 (uint32_t *)GetOffsetPtr(alloc, 0, y * 2, 0, lod, face);
188 (uint32_t *)GetOffsetPtr(alloc, 0, y * 2 + 1, 0, lod, face);
199 void mip8(const Allocation *alloc, int lod, RsAllocationCubemapFace face) {
200 uint32_t w = alloc->mHal.drvState.lod[lod + 1].dimX;
201 uint32_t h = alloc->mHal.drvState.lod[lod + 1].dimY;
204 uint8_t *oPtr = GetOffsetPtr(alloc, 0, y, 0, lod + 1, face);
205 const uint8_t *i1 = GetOffsetPtr(alloc, 0, y * 2, 0, lod, face);
206 const uint8_t *i2 = GetOffsetPtr(alloc, 0, y * 2 + 1, 0, lod, face);
299 bool rsovAllocationInit(const Context *rsc, Allocation *alloc, bool forceZero) {
302 const Type *type = alloc->getType();
305 size_t allocSize = AllocationBuildPointerTable(rsc, alloc, type, nullptr);
307 alloc->mHal.drv = rsovAlloc;
308 AllocationBuildPointerTable(rsc, alloc, type,
313 void rsovAllocationDestroy(const Context *rsc, Allocation *alloc) {
314 RSoVAllocation *rsovAlloc = static_cast<RSoVAllocation *>(alloc->mHal.drv);
316 alloc->mHal.drv = nullptr;
319 void rsovAllocationData1D(const Context *rsc, const Allocation *alloc,
322 const size_t eSize = alloc->mHal.state.type->getElementSizeBytes();
324 GetOffsetPtr(alloc, xoff, 0, 0, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X);
329 if (alloc->mHal.state.hasReferences) {
330 alloc->incRefs(data, count);
331 alloc->decRefs(ptr, count);
337 void rsovAllocationData2D(const Context *rsc, const Allocation *alloc,
341 size_t eSize = alloc->mHal.state.elementSizeBytes;
347 if (alloc->mHal.drvState.lod[0].mallocPtr) {
349 uint8_t *dst = GetOffsetPtr(alloc, xoff, yoff, 0, lod, face);
352 if (alloc->mHal.state.hasReferences) {
353 alloc->incRefs(src, w);
354 alloc->decRefs(dst, w);
358 dst += alloc->mHal.drvState.lod[lod].stride;
361 if (alloc->mHal.state.yuv) {
365 if (alloc->mHal.state.yuv == HAL_PIXEL_FORMAT_YV12) {
368 } else if (alloc->mHal.state.yuv == HAL_PIXEL_FORMAT_YCrCb_420_SP) {
374 uint8_t *dst = GetOffsetPtr(alloc, xoff, yoff, 0, lod, face);
381 dst += alloc->mHal.drvState.lod[lod].stride;
389 void rsovAllocationData3D(const Context *rsc, const Allocation *alloc,
393 uint32_t eSize = alloc->mHal.state.elementSizeBytes;
399 if (alloc->mHal.drvState.lod[0].mallocPtr) {
402 uint8_t *dst = GetOffsetPtr(alloc, xoff, yoff, z, lod,
405 if (alloc->mHal.state.hasReferences) {
406 alloc->incRefs(src, w);
407 alloc->decRefs(dst, w);
411 dst += alloc->mHal.drvState.lod[lod].stride;
417 void rsovAllocationRead1D(const Context *rsc, const Allocation *alloc,
420 const size_t eSize = alloc->mHal.state.type->getElementSizeBytes();
422 GetOffsetPtr(alloc, xoff, 0, 0, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X);
430 void rsovAllocationRead2D(const Context *rsc, const Allocation *alloc,
434 size_t eSize = alloc->mHal.state.elementSizeBytes;
440 if (alloc->mHal.drvState.lod[0].mallocPtr) {
442 const uint8_t *src = GetOffsetPtr(alloc, xoff, yoff, 0, lod, face);
452 src += alloc->mHal.drvState.lod[lod].stride;
459 void rsovAllocationRead3D(const Context *rsc, const Allocation *alloc,
463 uint32_t eSize = alloc->mHal.state.elementSizeBytes;
469 if (alloc->mHal.drvState.lod[0].mallocPtr) {
472 const uint8_t *src = GetOffsetPtr(alloc, xoff, yoff, z, lod,
483 src += alloc->mHal.drvState.lod[lod].stride;
489 void *rsovAllocationLock1D(const Context *rsc, const Allocation *alloc) {
490 return alloc->mHal.drvState.lod[0].mallocPtr;
493 void rsovAllocationUnlock1D(const Context *rsc, const Allocation *alloc) {}
568 void rsovAllocationAdapterOffset(const Context *rsc, const Allocation *alloc) {
570 const Allocation *base = alloc->mHal.state.baseAlloc;
571 const Type *type = alloc->mHal.state.type;
576 const int lodBias = alloc->mHal.state.originLOD;
577 uint32_t lodCount = rsMax(alloc->mHal.drvState.lodCount, (uint32_t)1);
579 alloc->mHal.drvState.lod[lod] = base->mHal.drvState.lod[lod + lodBias];
580 alloc->mHal.drvState.lod[lod].mallocPtr = GetOffsetPtr(
581 alloc, alloc->mHal.state.originX, alloc->mHal.state.originY,
582 alloc->mHal.state.originZ, lodBias,
583 (RsAllocationCubemapFace)alloc->mHal.state.originFace);
587 bool rsovAllocationAdapterInit(const Context *rsc, Allocation *alloc) {
594 alloc->mHal.drv = drv;
598 rsovAllocationAdapterOffset(rsc, alloc);
603 void rsovAllocationSyncAll(const Context *rsc, const Allocation *alloc,
608 void rsovAllocationMarkDirty(const Context *rsc, const Allocation *alloc) {
612 void rsovAllocationResize(const Context *rsc, const Allocation *alloc,
620 const Allocation *alloc) {
621 if (!alloc->mHal.drvState.lod[0].mallocPtr) {
624 uint32_t numFaces = alloc->getType()->getDimFaces() ? 6 : 1;
626 for (uint32_t lod = 0; lod < (alloc->getType()->getLODCount() - 1); lod++) {
627 switch (alloc->getType()->getElement()->getSizeBits()) {
629 mip8888(alloc, lod, (RsAllocationCubemapFace)face);
632 mip565(alloc, lod, (RsAllocationCubemapFace)face);
635 mip8(alloc, lod, (RsAllocationCubemapFace)face);
642 uint32_t rsovAllocationGrallocBits(const Context *rsc, Allocation *alloc) {
647 const Allocation *alloc,
649 obj->p = alloc;
657 void rsovAllocationSetSurface(const Context *rsc, Allocation *alloc,
662 void rsovAllocationIoSend(const Context *rsc, Allocation *alloc) {
666 void rsovAllocationIoReceive(const Context *rsc, Allocation *alloc) {
670 void rsovAllocationElementData(const Context *rsc, const Allocation *alloc,
675 GetOffsetPtr(alloc, x, y, z, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X);
677 const Element *e = alloc->mHal.state.type->getElement()->getField(cIdx);
678 ptr += alloc->mHal.state.type->getElement()->getFieldOffsetBytes(cIdx);
680 if (alloc->mHal.state.hasReferences) {
688 void rsovAllocationElementRead(const Context *rsc, const Allocation *alloc,
692 GetOffsetPtr(alloc, x, y, z, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X);
694 const Element *e = alloc->mHal.state.type->getElement()->getField(cIdx);
695 ptr += alloc->mHal.state.type->getElement()->getFieldOffsetBytes(cIdx);