本文整理汇总了C++中Allocation::data方法的典型用法代码示例。如果您正苦于以下问题:C++ Allocation::data方法的具体用法?C++ Allocation::data怎么用?C++ Allocation::data使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Allocation
的用法示例。
在下文中一共展示了Allocation::data方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
Allocation *Allocation::createFromStream(Context *rsc, IStream *stream) {
// First make sure we are reading the correct object
RsA3DClassID classID = (RsA3DClassID)stream->loadU32();
if (classID != RS_A3D_CLASS_ID_ALLOCATION) {
rsc->setError(RS_ERROR_FATAL_DRIVER,
"allocation loading failed due to corrupt file. (invalid id)\n");
return nullptr;
}
const char *name = stream->loadString();
Type *type = Type::createFromStream(rsc, stream);
if (!type) {
return nullptr;
}
type->compute();
Allocation *alloc = Allocation::createAllocation(rsc, type, RS_ALLOCATION_USAGE_SCRIPT);
type->decUserRef();
// Number of bytes we wrote out for this allocation
uint32_t dataSize = stream->loadU32();
// 3 element vectors are padded to 4 in memory, but padding isn't serialized
uint32_t packedSize = alloc->getPackedSize();
if (dataSize != type->getPackedSizeBytes() &&
dataSize != packedSize) {
rsc->setError(RS_ERROR_FATAL_DRIVER,
"allocation loading failed due to corrupt file. (invalid size)\n");
ObjectBase::checkDelete(alloc);
ObjectBase::checkDelete(type);
return nullptr;
}
alloc->assignName(name);
if (dataSize == type->getPackedSizeBytes()) {
uint32_t count = dataSize / type->getElementSizeBytes();
// Read in all of our allocation data
alloc->data(rsc, 0, 0, count, stream->getPtr() + stream->getPos(), dataSize);
} else {
alloc->unpackVec3Allocation(rsc, stream->getPtr() + stream->getPos(), dataSize);
}
stream->reset(stream->getPos() + dataSize);
return alloc;
}
示例2: rsi_AllocationCreateFromBitmap
RsAllocation rsi_AllocationCreateFromBitmap(Context *rsc, RsType vtype,
RsAllocationMipmapControl mipmaps,
const void *data, size_t sizeBytes, uint32_t usages) {
Type *t = static_cast<Type *>(vtype);
RsAllocation vTexAlloc = rsi_AllocationCreateTyped(rsc, vtype, mipmaps, usages, 0);
Allocation *texAlloc = static_cast<Allocation *>(vTexAlloc);
if (texAlloc == nullptr) {
ALOGE("Memory allocation failure");
return nullptr;
}
texAlloc->data(rsc, 0, 0, 0, RS_ALLOCATION_CUBEMAP_FACE_POSITIVE_X,
t->getDimX(), t->getDimY(), data, sizeBytes, 0);
if (mipmaps == RS_ALLOCATION_MIPMAP_FULL) {
rsc->mHal.funcs.allocation.generateMipmaps(rsc, texAlloc);
}
texAlloc->sendDirty(rsc);
return texAlloc;
}
示例3: rsi_AllocationCubeCreateFromBitmap
RsAllocation rsi_AllocationCubeCreateFromBitmap(Context *rsc, RsType vtype,
RsAllocationMipmapControl mipmaps,
const void *data, size_t sizeBytes, uint32_t usages) {
Type *t = static_cast<Type *>(vtype);
// Cubemap allocation's faces should be Width by Width each.
// Source data should have 6 * Width by Width pixels
// Error checking is done in the java layer
RsAllocation vTexAlloc = rsi_AllocationCreateTyped(rsc, vtype, mipmaps, usages, 0);
Allocation *texAlloc = static_cast<Allocation *>(vTexAlloc);
if (texAlloc == nullptr) {
ALOGE("Memory allocation failure");
return nullptr;
}
uint32_t faceSize = t->getDimX();
uint32_t strideBytes = faceSize * 6 * t->getElementSizeBytes();
uint32_t copySize = faceSize * t->getElementSizeBytes();
uint8_t *sourcePtr = (uint8_t*)data;
for (uint32_t face = 0; face < 6; face ++) {
for (uint32_t dI = 0; dI < faceSize; dI ++) {
texAlloc->data(rsc, 0, dI, 0, (RsAllocationCubemapFace)face,
t->getDimX(), 1, sourcePtr + strideBytes * dI, copySize, 0);
}
// Move the data pointer to the next cube face
sourcePtr += copySize;
}
if (mipmaps == RS_ALLOCATION_MIPMAP_FULL) {
rsc->mHal.funcs.allocation.generateMipmaps(rsc, texAlloc);
}
texAlloc->sendDirty(rsc);
return texAlloc;
}
示例4: ALOGE
Allocation *Allocation::createFromStream(Context *rsc, IStream *stream) {
// First make sure we are reading the correct object
RsA3DClassID classID = (RsA3DClassID)stream->loadU32();
if (classID != RS_A3D_CLASS_ID_ALLOCATION) {
ALOGE("allocation loading skipped due to invalid class id\n");
return NULL;
}
String8 name;
stream->loadString(&name);
Type *type = Type::createFromStream(rsc, stream);
if (!type) {
return NULL;
}
type->compute();
// Number of bytes we wrote out for this allocation
uint32_t dataSize = stream->loadU32();
if (dataSize != type->getSizeBytes()) {
ALOGE("failed to read allocation because numbytes written is not the same loaded type wants\n");
ObjectBase::checkDelete(type);
return NULL;
}
Allocation *alloc = Allocation::createAllocation(rsc, type, RS_ALLOCATION_USAGE_SCRIPT);
alloc->setName(name.string(), name.size());
type->decUserRef();
uint32_t count = dataSize / type->getElementSizeBytes();
// Read in all of our allocation data
alloc->data(rsc, 0, 0, count, stream->getPtr() + stream->getPos(), dataSize);
stream->reset(stream->getPos() + dataSize);
return alloc;
}
示例5: rsi_Allocation3DData
void rsi_Allocation3DData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod,
uint32_t w, uint32_t h, uint32_t d, const void *data, size_t sizeBytes, size_t stride) {
Allocation *a = static_cast<Allocation *>(va);
a->data(rsc, xoff, yoff, zoff, lod, w, h, d, data, sizeBytes, stride);
}
示例6: rsi_Allocation2DData
void rsi_Allocation2DData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face,
uint32_t w, uint32_t h, const void *data, size_t sizeBytes, size_t stride) {
Allocation *a = static_cast<Allocation *>(va);
a->data(rsc, xoff, yoff, lod, face, w, h, data, sizeBytes, stride);
}
示例7: rsi_Allocation1DData
void rsi_Allocation1DData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t lod,
uint32_t count, const void *data, size_t sizeBytes) {
Allocation *a = static_cast<Allocation *>(va);
a->data(rsc, xoff, lod, count, data, sizeBytes);
}