diff options
author | Jason Sams <rjsams@android.com> | 2010-12-29 14:31:29 -0800 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2010-12-29 14:31:29 -0800 |
commit | 49a05d7b82956009f03acbb92a064eed054eb031 (patch) | |
tree | d0cd4c1b228dfbf08170ffe1712087df41ac38fd /libs/rs | |
parent | 5c68a712dacf8cf0a419f1b743474a3b4290d024 (diff) | |
download | frameworks_base-49a05d7b82956009f03acbb92a064eed054eb031.zip frameworks_base-49a05d7b82956009f03acbb92a064eed054eb031.tar.gz frameworks_base-49a05d7b82956009f03acbb92a064eed054eb031.tar.bz2 |
Move adapter2D to a derived class from Allocation.
Change-Id: I7e9d8b0028ba95956476f253da38dbe64564d0da
Diffstat (limited to 'libs/rs')
-rw-r--r-- | libs/rs/RenderScript.h | 9 | ||||
-rw-r--r-- | libs/rs/rs.spec | 87 | ||||
-rw-r--r-- | libs/rs/rsAllocation.cpp | 58 | ||||
-rw-r--r-- | libs/rs/rsAllocation.h | 11 | ||||
-rw-r--r-- | libs/rs/rsFont.cpp | 2 | ||||
-rw-r--r-- | libs/rs/rsHandcode.h | 43 |
6 files changed, 60 insertions, 150 deletions
diff --git a/libs/rs/RenderScript.h b/libs/rs/RenderScript.h index 3ad453f..87758e5 100644 --- a/libs/rs/RenderScript.h +++ b/libs/rs/RenderScript.h @@ -111,6 +111,15 @@ enum RsAllocationMipmapControl { RS_ALLOCATION_MIPMAP_ON_SYNC_TO_TEXTURE = 2 }; +enum RsAllocationCubemapFace { + RS_ALLOCATION_CUBMAP_FACE_POSITVE_X = 0, + RS_ALLOCATION_CUBMAP_FACE_NEGATIVE_X = 1, + RS_ALLOCATION_CUBMAP_FACE_POSITVE_Y = 2, + RS_ALLOCATION_CUBMAP_FACE_NEGATIVE_Y = 3, + RS_ALLOCATION_CUBMAP_FACE_POSITVE_Z = 4, + RS_ALLOCATION_CUBMAP_FACE_NEGATIVE_Z = 5 +}; + enum RsDataType { RS_TYPE_NONE, RS_TYPE_FLOAT_16, diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec index a5810d4..3483a5d 100644 --- a/libs/rs/rs.spec +++ b/libs/rs/rs.spec @@ -89,28 +89,11 @@ AllocationCopyToBitmap { param size_t dataLen } -AllocationUploadToTexture { - param RsAllocation alloc - param bool genMipMaps - param uint32_t baseMipLevel - } - -AllocationUploadToBufferObject { - param RsAllocation alloc - } - - -AllocationData { - param RsAllocation va - param const void * data - param uint32_t bytes - handcodeApi - togglePlay - } -Allocation1DSubData { +Allocation1DData { param RsAllocation va param uint32_t xoff + param uint32_t lod param uint32_t count param const void *data param uint32_t bytes @@ -118,9 +101,10 @@ Allocation1DSubData { togglePlay } -Allocation1DSubElementData { +Allocation1DElementData { param RsAllocation va param uint32_t x + param uint32_t lod param const void *data param uint32_t comp_offset param uint32_t bytes @@ -128,20 +112,24 @@ Allocation1DSubElementData { togglePlay } -Allocation2DSubData { +Allocation2DData { param RsAllocation va param uint32_t xoff param uint32_t yoff + param uint32_t lod + param RsAllocationCubemapFace face param uint32_t w param uint32_t h param const void *data param uint32_t bytes } -Allocation2DSubElementData { +Allocation2DElementData { param RsAllocation va param uint32_t x param uint32_t y + param uint32_t lod + param RsAllocationCubemapFace face param const void *data param uint32_t element_offset param uint32_t bytes @@ -157,61 +145,6 @@ AllocationSyncAll { param RsAllocationUsageType src } -Adapter1DCreate { - ret RsAdapter1D - } - -Adapter1DBindAllocation { - param RsAdapter1D adapt - param RsAllocation alloc - } - -Adapter1DSetConstraint { - param RsAdapter1D adapter - param RsDimension dim - param uint32_t value - } - -Adapter1DData { - param RsAdapter1D adapter - param const void * data - } - -Adapter1DSubData { - param RsAdapter1D adapter - param uint32_t xoff - param uint32_t count - param const void *data - } - -Adapter2DCreate { - ret RsAdapter2D - } - -Adapter2DBindAllocation { - param RsAdapter2D adapt - param RsAllocation alloc - } - -Adapter2DSetConstraint { - param RsAdapter2D adapter - param RsDimension dim - param uint32_t value - } - -Adapter2DData { - param RsAdapter2D adapter - param const void *data - } - -Adapter2DSubData { - param RsAdapter2D adapter - param uint32_t xoff - param uint32_t yoff - param uint32_t w - param uint32_t h - param const void *data - } AllocationResize1D { param RsAllocation va diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp index ec1f684..3608e43 100644 --- a/libs/rs/rsAllocation.cpp +++ b/libs/rs/rsAllocation.cpp @@ -307,29 +307,12 @@ void Allocation::uploadCheck(Context *rsc) { } } - -void Allocation::data(Context *rsc, const void *data, uint32_t sizeBytes) { - uint32_t size = mType->getSizeBytes(); - if (size != sizeBytes) { - LOGE("Allocation::data called with mismatched size expected %i, got %i", size, sizeBytes); - return; - } - - if (mType->getElement()->getHasReferences()) { - incRefs(data, sizeBytes / mType->getElement()->getSizeBytes()); - decRefs(mPtr, sizeBytes / mType->getElement()->getSizeBytes()); - } - - memcpy(mPtr, data, size); - sendDirty(); - mUploadDefered = true; -} - void Allocation::read(void *data) { memcpy(data, mPtr, mType->getSizeBytes()); } -void Allocation::subData(Context *rsc, uint32_t xoff, uint32_t count, const void *data, uint32_t sizeBytes) { +void Allocation::data(Context *rsc, uint32_t xoff, uint32_t lod, + uint32_t count, const void *data, uint32_t sizeBytes) { uint32_t eSize = mType->getElementSizeBytes(); uint8_t * ptr = static_cast<uint8_t *>(mPtr); ptr += eSize * xoff; @@ -351,7 +334,7 @@ void Allocation::subData(Context *rsc, uint32_t xoff, uint32_t count, const void mUploadDefered = true; } -void Allocation::subData(Context *rsc, uint32_t xoff, uint32_t yoff, +void Allocation::data(Context *rsc, uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face, uint32_t w, uint32_t h, const void *data, uint32_t sizeBytes) { uint32_t eSize = mType->getElementSizeBytes(); uint32_t lineSize = eSize * w; @@ -379,11 +362,11 @@ void Allocation::subData(Context *rsc, uint32_t xoff, uint32_t yoff, mUploadDefered = true; } -void Allocation::subData(Context *rsc, uint32_t xoff, uint32_t yoff, uint32_t zoff, +void Allocation::data(Context *rsc, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, RsAllocationCubemapFace face, uint32_t w, uint32_t h, uint32_t d, const void *data, uint32_t sizeBytes) { } -void Allocation::subElementData(Context *rsc, uint32_t x, const void *data, +void Allocation::elementData(Context *rsc, uint32_t x, const void *data, uint32_t cIdx, uint32_t sizeBytes) { uint32_t eSize = mType->getElementSizeBytes(); uint8_t * ptr = static_cast<uint8_t *>(mPtr); @@ -420,7 +403,7 @@ void Allocation::subElementData(Context *rsc, uint32_t x, const void *data, mUploadDefered = true; } -void Allocation::subElementData(Context *rsc, uint32_t x, uint32_t y, +void Allocation::elementData(Context *rsc, uint32_t x, uint32_t y, const void *data, uint32_t cIdx, uint32_t sizeBytes) { uint32_t eSize = mType->getElementSizeBytes(); uint8_t * ptr = static_cast<uint8_t *>(mPtr); @@ -539,8 +522,10 @@ Allocation *Allocation::createFromStream(Context *rsc, IStream *stream) { Allocation *alloc = new Allocation(rsc, type, RS_ALLOCATION_USAGE_SCRIPT); alloc->setName(name.string(), name.size()); + uint32_t count = dataSize / type->getElementSizeBytes(); + // Read in all of our allocation data - alloc->data(rsc, stream->getPtr() + stream->getPos(), dataSize); + alloc->data(rsc, 0, 0, count, stream->getPtr() + stream->getPos(), dataSize); stream->reset(stream->getPos() + dataSize); return alloc; @@ -741,29 +726,28 @@ void rsi_AllocationCopyToBitmap(Context *rsc, RsAllocation va, void *data, size_ memcpy(data, texAlloc->getPtr(), s); } -void rsi_AllocationData(Context *rsc, RsAllocation va, const void *data, uint32_t sizeBytes) { - Allocation *a = static_cast<Allocation *>(va); - a->data(rsc, data, sizeBytes); -} - -void rsi_Allocation1DSubData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t count, const void *data, uint32_t sizeBytes) { +void rsi_Allocation1DData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t lod, + uint32_t count, const void *data, uint32_t sizeBytes) { Allocation *a = static_cast<Allocation *>(va); - a->subData(rsc, xoff, count, data, sizeBytes); + a->data(rsc, xoff, lod, count, data, sizeBytes); } -void rsi_Allocation2DSubElementData(Context *rsc, RsAllocation va, uint32_t x, uint32_t y, const void *data, uint32_t eoff, uint32_t sizeBytes) { +void rsi_Allocation2DElementData(Context *rsc, RsAllocation va, uint32_t x, uint32_t y, uint32_t lod, RsAllocationCubemapFace face, + const void *data, uint32_t eoff, uint32_t sizeBytes) { Allocation *a = static_cast<Allocation *>(va); - a->subElementData(rsc, x, y, data, eoff, sizeBytes); + a->elementData(rsc, x, y, data, eoff, sizeBytes); } -void rsi_Allocation1DSubElementData(Context *rsc, RsAllocation va, uint32_t x, const void *data, uint32_t eoff, uint32_t sizeBytes) { +void rsi_Allocation1DElementData(Context *rsc, RsAllocation va, uint32_t x, uint32_t lod, + const void *data, uint32_t eoff, uint32_t sizeBytes) { Allocation *a = static_cast<Allocation *>(va); - a->subElementData(rsc, x, data, eoff, sizeBytes); + a->elementData(rsc, x, data, eoff, sizeBytes); } -void rsi_Allocation2DSubData(Context *rsc, RsAllocation va, uint32_t xoff, uint32_t yoff, uint32_t w, uint32_t h, const void *data, uint32_t sizeBytes) { +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, uint32_t sizeBytes) { Allocation *a = static_cast<Allocation *>(va); - a->subData(rsc, xoff, yoff, w, h, data, sizeBytes); + a->data(rsc, xoff, yoff, lod, face, w, h, data, sizeBytes); } void rsi_AllocationRead(Context *rsc, RsAllocation va, void *data) { diff --git a/libs/rs/rsAllocation.h b/libs/rs/rsAllocation.h index 44dce0d..a8d086e 100644 --- a/libs/rs/rsAllocation.h +++ b/libs/rs/rsAllocation.h @@ -61,16 +61,15 @@ public: void resize1D(Context *rsc, uint32_t dimX); void resize2D(Context *rsc, uint32_t dimX, uint32_t dimY); - void data(Context *rsc, const void *data, uint32_t sizeBytes); - void subData(Context *rsc, uint32_t xoff, uint32_t count, const void *data, uint32_t sizeBytes); - void subData(Context *rsc, uint32_t xoff, uint32_t yoff, + void data(Context *rsc, uint32_t xoff, uint32_t lod, uint32_t count, const void *data, uint32_t sizeBytes); + void data(Context *rsc, uint32_t xoff, uint32_t yoff, uint32_t lod, RsAllocationCubemapFace face, uint32_t w, uint32_t h, const void *data, uint32_t sizeBytes); - void subData(Context *rsc, uint32_t xoff, uint32_t yoff, uint32_t zoff, + void data(Context *rsc, uint32_t xoff, uint32_t yoff, uint32_t zoff, uint32_t lod, RsAllocationCubemapFace face, uint32_t w, uint32_t h, uint32_t d, const void *data, uint32_t sizeBytes); - void subElementData(Context *rsc, uint32_t x, + void elementData(Context *rsc, uint32_t x, const void *data, uint32_t elementOff, uint32_t sizeBytes); - void subElementData(Context *rsc, uint32_t x, uint32_t y, + void elementData(Context *rsc, uint32_t x, uint32_t y, const void *data, uint32_t elementOff, uint32_t sizeBytes); void read(void *data); diff --git a/libs/rs/rsFont.cpp b/libs/rs/rsFont.cpp index 80bca43..3dcf743 100644 --- a/libs/rs/rsFont.cpp +++ b/libs/rs/rsFont.cpp @@ -606,7 +606,7 @@ void FontState::issueDrawCommand() { mRSC->setProgramStore(mFontProgramStore.get()); if (mConstantsDirty) { - mFontShaderFConstant->data(mRSC, &mConstants, sizeof(mConstants)); + mFontShaderFConstant->data(mRSC, 0, 0, 1, &mConstants, sizeof(mConstants)); mConstantsDirty = false; } diff --git a/libs/rs/rsHandcode.h b/libs/rs/rsHandcode.h index 122a9ed..6f21a35 100644 --- a/libs/rs/rsHandcode.h +++ b/libs/rs/rsHandcode.h @@ -49,64 +49,49 @@ static inline void rsHCAPI_ScriptSetVarV (RsContext rsc, RsScript va, uint32_t s } } -static inline void rsHCAPI_AllocationData (RsContext rsc, RsAllocation va, const void * data, uint32_t sizeBytes) { +static inline void rsHCAPI_Allocation1DData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t lod, + uint32_t count, const void * data, uint32_t sizeBytes) { ThreadIO *io = &((Context *)rsc)->mIO; - uint32_t size = sizeof(RS_CMD_AllocationData); + uint32_t size = sizeof(RS_CMD_Allocation1DData); if (sizeBytes < DATA_SYNC_SIZE) { size += (sizeBytes + 3) & ~3; } - RS_CMD_AllocationData *cmd = static_cast<RS_CMD_AllocationData *>(io->mToCore.reserve(size)); - cmd->va = va; - cmd->bytes = sizeBytes; - cmd->data = data; - if (sizeBytes < DATA_SYNC_SIZE) { - cmd->data = (void *)(cmd+1); - memcpy(cmd+1, data, sizeBytes); - io->mToCore.commit(RS_CMD_ID_AllocationData, size); - } else { - io->mToCore.commitSync(RS_CMD_ID_AllocationData, size); - } -} - -static inline void rsHCAPI_Allocation1DSubData (RsContext rsc, RsAllocation va, uint32_t xoff, uint32_t count, const void * data, uint32_t sizeBytes) { - ThreadIO *io = &((Context *)rsc)->mIO; - uint32_t size = sizeof(RS_CMD_Allocation1DSubData); - if (sizeBytes < DATA_SYNC_SIZE) { - size += (sizeBytes + 3) & ~3; - } - RS_CMD_Allocation1DSubData *cmd = static_cast<RS_CMD_Allocation1DSubData *>(io->mToCore.reserve(size)); + RS_CMD_Allocation1DData *cmd = static_cast<RS_CMD_Allocation1DData *>(io->mToCore.reserve(size)); cmd->va = va; cmd->xoff = xoff; + cmd->lod = lod; cmd->count = count; cmd->data = data; cmd->bytes = sizeBytes; if (sizeBytes < DATA_SYNC_SIZE) { cmd->data = (void *)(cmd+1); memcpy(cmd+1, data, sizeBytes); - io->mToCore.commit(RS_CMD_ID_Allocation1DSubData, size); + io->mToCore.commit(RS_CMD_ID_Allocation1DData, size); } else { - io->mToCore.commitSync(RS_CMD_ID_Allocation1DSubData, size); + io->mToCore.commitSync(RS_CMD_ID_Allocation1DData, size); } } -static inline void rsHCAPI_Allocation1DSubElementData (RsContext rsc, RsAllocation va, uint32_t x, const void * data, uint32_t comp_offset, uint32_t sizeBytes) { +static inline void rsHCAPI_Allocation1DElementData (RsContext rsc, RsAllocation va, uint32_t x, uint32_t lod, + const void * data, uint32_t comp_offset, uint32_t sizeBytes) { ThreadIO *io = &((Context *)rsc)->mIO; - uint32_t size = sizeof(RS_CMD_Allocation1DSubElementData); + uint32_t size = sizeof(RS_CMD_Allocation1DElementData); if (sizeBytes < DATA_SYNC_SIZE) { size += (sizeBytes + 3) & ~3; } - RS_CMD_Allocation1DSubElementData *cmd = static_cast<RS_CMD_Allocation1DSubElementData *>(io->mToCore.reserve(size)); + RS_CMD_Allocation1DElementData *cmd = static_cast<RS_CMD_Allocation1DElementData *>(io->mToCore.reserve(size)); cmd->va = va; cmd->x = x; + cmd->lod = lod; cmd->data = data; cmd->comp_offset = comp_offset; cmd->bytes = sizeBytes; if (sizeBytes < DATA_SYNC_SIZE) { cmd->data = (void *)(cmd+1); memcpy(cmd+1, data, sizeBytes); - io->mToCore.commit(RS_CMD_ID_Allocation1DSubElementData, size); + io->mToCore.commit(RS_CMD_ID_Allocation1DElementData, size); } else { - io->mToCore.commitSync(RS_CMD_ID_Allocation1DSubElementData, size); + io->mToCore.commitSync(RS_CMD_ID_Allocation1DElementData, size); } } |