diff options
| -rw-r--r-- | libs/rs/RenderScript.h | 26 | ||||
| -rw-r--r-- | libs/rs/rs.spec | 17 | ||||
| -rw-r--r-- | libs/rs/rsAllocation.cpp | 116 | ||||
| -rw-r--r-- | libs/rs/rsElement.cpp | 197 | ||||
| -rw-r--r-- | libs/rs/rsElement.h | 18 | ||||
| -rw-r--r-- | libs/rs/rsProgramVertex.cpp | 11 | ||||
| -rw-r--r-- | libs/rs/rsProgramVertex.h | 2 |
7 files changed, 10 insertions, 377 deletions
diff --git a/libs/rs/RenderScript.h b/libs/rs/RenderScript.h index fe685118ced9..87a2f4a8f6ec 100644 --- a/libs/rs/RenderScript.h +++ b/libs/rs/RenderScript.h @@ -90,32 +90,6 @@ enum RsDataKind { RS_KIND_POINT_SIZE }; -enum RsElementPredefined { - RS_ELEMENT_USER_U8, - RS_ELEMENT_USER_I8, - RS_ELEMENT_USER_U16, - RS_ELEMENT_USER_I16, - RS_ELEMENT_USER_U32, - RS_ELEMENT_USER_I32, - RS_ELEMENT_USER_FLOAT, - - RS_ELEMENT_A_8, // 7 - RS_ELEMENT_RGB_565, // 8 - RS_ELEMENT_RGBA_5551, // 9 - RS_ELEMENT_RGBA_4444, // 10 - RS_ELEMENT_RGB_888, // 11 - RS_ELEMENT_RGBA_8888, // 12 - - RS_ELEMENT_INDEX_16, //13 - RS_ELEMENT_INDEX_32, - RS_ELEMENT_XY_F32, - RS_ELEMENT_XYZ_F32, - RS_ELEMENT_ST_XY_F32, - RS_ELEMENT_ST_XYZ_F32, - RS_ELEMENT_NORM_XYZ_F32, - RS_ELEMENT_NORM_ST_XYZ_F32, -}; - enum RsSamplerParam { RS_SAMPLER_MIN_FILTER, RS_SAMPLER_MAG_FILTER, diff --git a/libs/rs/rs.spec b/libs/rs/rs.spec index a6eb4679aa33..8cdf2b7549a8 100644 --- a/libs/rs/rs.spec +++ b/libs/rs/rs.spec @@ -55,11 +55,6 @@ ElementCreate { ret RsElement } -ElementGetPredefined { - param RsElementPredefined predef - ret RsElement - } - TypeBegin { param RsElement type } @@ -78,24 +73,12 @@ AllocationCreateTyped { ret RsAllocation } -AllocationCreatePredefSized { - param RsElementPredefined predef - param size_t count - ret RsAllocation - } - AllocationCreateSized { param RsElement e param size_t count ret RsAllocation } -AllocationCreateFromFile { - param const char *file - param bool genMips - ret RsAllocation - } - AllocationCreateFromBitmap { param uint32_t width param uint32_t height diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp index c267e1631d4d..cb82624688aa 100644 --- a/libs/rs/rsAllocation.cpp +++ b/libs/rs/rsAllocation.cpp @@ -191,12 +191,6 @@ RsAllocation rsi_AllocationCreateTyped(Context *rsc, RsType vtype) return alloc; } -RsAllocation rsi_AllocationCreatePredefSized(Context *rsc, RsElementPredefined t, size_t count) -{ - RsElement e = rsi_ElementGetPredefined(rsc, t); - return rsi_AllocationCreateSized(rsc, e, count); -} - RsAllocation rsi_AllocationCreateSized(Context *rsc, RsElement e, size_t count) { Type * type = new Type(); @@ -421,116 +415,6 @@ RsAllocation rsi_AllocationCreateFromBitmapBoxed(Context *rsc, uint32_t w, uint3 } - -RsAllocation rsi_AllocationCreateFromFile(Context *rsc, const char *file, bool genMips) -{ - bool use32bpp = false; - - typedef struct _Win3xBitmapHeader - { - uint16_t type; - uint32_t totalSize; - uint32_t reserved; - uint32_t offset; - int32_t hdrSize; /* Size of this header in bytes */ - int32_t width; /* Image width in pixels */ - int32_t height; /* Image height in pixels */ - int16_t planes; /* Number of color planes */ - int16_t bpp; /* Number of bits per pixel */ - /* Fields added for Windows 3.x follow this line */ - int32_t compression; /* Compression methods used */ - int32_t sizeOfBitmap; /* Size of bitmap in bytes */ - int32_t horzResolution; /* Horizontal resolution in pixels per meter */ - int32_t vertResolution; /* Vertical resolution in pixels per meter */ - int32_t colorsUsed; /* Number of colors in the image */ - int32_t colorsImportant; /* Minimum number of important colors */ - } __attribute__((__packed__)) WIN3XBITMAPHEADER; - - _Win3xBitmapHeader hdr; - - FILE *f = fopen(file, "rb"); - if (f == NULL) { - LOGE("rsAllocationCreateFromBitmap failed to open file %s", file); - return NULL; - } - memset(&hdr, 0, sizeof(hdr)); - fread(&hdr, sizeof(hdr), 1, f); - - if (hdr.bpp != 24) { - LOGE("Unsuported BMP type"); - fclose(f); - return NULL; - } - - int32_t texWidth = rsHigherPow2(hdr.width); - int32_t texHeight = rsHigherPow2(hdr.height); - - if (use32bpp) { - rsi_TypeBegin(rsc, rsi_ElementGetPredefined(rsc, RS_ELEMENT_RGBA_8888)); - } else { - rsi_TypeBegin(rsc, rsi_ElementGetPredefined(rsc, RS_ELEMENT_RGB_565)); - } - rsi_TypeAdd(rsc, RS_DIMENSION_X, texWidth); - rsi_TypeAdd(rsc, RS_DIMENSION_Y, texHeight); - if (genMips) { - rsi_TypeAdd(rsc, RS_DIMENSION_LOD, 1); - } - RsType type = rsi_TypeCreate(rsc); - - RsAllocation vTexAlloc = rsi_AllocationCreateTyped(rsc, type); - Allocation *texAlloc = static_cast<Allocation *>(vTexAlloc); - texAlloc->incUserRef(); - if (texAlloc == NULL) { - LOGE("Memory allocation failure"); - fclose(f); - return NULL; - } - - // offset to letterbox if height is not pow2 - Adapter2D adapt(texAlloc); - uint8_t * fileInBuf = new uint8_t[texWidth * 3]; - uint32_t yOffset = (hdr.width - hdr.height) / 2; - - if (use32bpp) { - uint8_t *tmp = static_cast<uint8_t *>(adapt.getElement(0, yOffset)); - for (int y=0; y < hdr.height; y++) { - fseek(f, hdr.offset + (y*hdr.width*3), SEEK_SET); - fread(fileInBuf, 1, hdr.width * 3, f); - for(int x=0; x < hdr.width; x++) { - tmp[0] = fileInBuf[x*3 + 2]; - tmp[1] = fileInBuf[x*3 + 1]; - tmp[2] = fileInBuf[x*3]; - tmp[3] = 0xff; - tmp += 4; - } - } - } else { - uint16_t *tmp = static_cast<uint16_t *>(adapt.getElement(0, yOffset)); - for (int y=0; y < hdr.height; y++) { - fseek(f, hdr.offset + (y*hdr.width*3), SEEK_SET); - fread(fileInBuf, 1, hdr.width * 3, f); - for(int x=0; x < hdr.width; x++) { - *tmp = rs888to565(fileInBuf[x*3 + 2], fileInBuf[x*3 + 1], fileInBuf[x*3]); - tmp++; - } - } - } - - fclose(f); - delete [] fileInBuf; - - if (genMips) { - Adapter2D adapt2(texAlloc); - for(uint32_t lod=0; lod < (texAlloc->getType()->getLODCount() -1); lod++) { - adapt.setLOD(lod); - adapt2.setLOD(lod + 1); - mip(adapt2, adapt); - } - } - - return texAlloc; -} - void rsi_AllocationData(Context *rsc, RsAllocation va, const void *data, uint32_t sizeBytes) { Allocation *a = static_cast<Allocation *>(va); diff --git a/libs/rs/rsElement.cpp b/libs/rs/rsElement.cpp index 679452290a4a..b5267b36459c 100644 --- a/libs/rs/rsElement.cpp +++ b/libs/rs/rsElement.cpp @@ -21,170 +21,6 @@ using namespace android; using namespace android::renderscript; -void ElementState::initPredefined() -{ - Component * u_8 = new Component(Component::USER, Component::UNSIGNED, true, 8, 0); - Component * i_8 = new Component(Component::USER, Component::SIGNED, true, 8, 0); - Component * u_16 = new Component(Component::USER, Component::UNSIGNED, true, 16, 0); - Component * i_16 = new Component(Component::USER, Component::SIGNED, true, 16, 0); - Component * u_32 = new Component(Component::USER, Component::UNSIGNED, true, 32, 0); - Component * i_32 = new Component(Component::USER, Component::SIGNED, true, 32, 0); - Component * f_32 = new Component(Component::USER, Component::FLOAT, true, 32, 0); - - - Component * r_4 = new Component(Component::RED, Component::UNSIGNED, true, 4, 0); - Component * r_5 = new Component(Component::RED, Component::UNSIGNED, true, 5, 0); - Component * r_8 = new Component(Component::RED, Component::UNSIGNED, true, 8, 0); - - Component * g_4 = new Component(Component::GREEN, Component::UNSIGNED, true, 4, 0); - Component * g_5 = new Component(Component::GREEN, Component::UNSIGNED, true, 5, 0); - Component * g_6 = new Component(Component::GREEN, Component::UNSIGNED, true, 6, 0); - Component * g_8 = new Component(Component::GREEN, Component::UNSIGNED, true, 8, 0); - - Component * b_4 = new Component(Component::BLUE, Component::UNSIGNED, true, 4, 0); - Component * b_5 = new Component(Component::BLUE, Component::UNSIGNED, true, 5, 0); - Component * b_8 = new Component(Component::BLUE, Component::UNSIGNED, true, 8, 0); - - Component * a_1 = new Component(Component::ALPHA, Component::UNSIGNED, true, 1, 0); - Component * a_4 = new Component(Component::ALPHA, Component::UNSIGNED, true, 4, 0); - Component * a_8 = new Component(Component::ALPHA, Component::UNSIGNED, true, 8, 0); - - Component * idx_16 = new Component(Component::INDEX, Component::UNSIGNED, false, 16, 0); - Component * idx_32 = new Component(Component::INDEX, Component::UNSIGNED, false, 32, 0); - - Component * x = new Component(Component::X, Component::FLOAT, false, 32, 0); - Component * y = new Component(Component::Y, Component::FLOAT, false, 32, 0); - Component * z = new Component(Component::Z, Component::FLOAT, false, 32, 0); - - Component * nx = new Component(Component::NX, Component::FLOAT, false, 32, 0); - Component * ny = new Component(Component::NY, Component::FLOAT, false, 32, 0); - Component * nz = new Component(Component::NZ, Component::FLOAT, false, 32, 0); - - Component * s = new Component(Component::S, Component::FLOAT, false, 32, 0); - Component * t = new Component(Component::T, Component::FLOAT, false, 32, 0); - - Element * e; - - e = new Element(1); - e->setComponent(0, u_8); - mPredefinedList.add(Predefined(RS_ELEMENT_USER_U8, e)); - - e = new Element(1); - e->setComponent(0, i_8); - mPredefinedList.add(Predefined(RS_ELEMENT_USER_I8, e)); - - e = new Element(1); - e->setComponent(0, u_16); - mPredefinedList.add(Predefined(RS_ELEMENT_USER_U16, e)); - - e = new Element(1); - e->setComponent(0, i_16); - mPredefinedList.add(Predefined(RS_ELEMENT_USER_I16, e)); - - e = new Element(1); - e->setComponent(0, u_32); - mPredefinedList.add(Predefined(RS_ELEMENT_USER_U32, e)); - - e = new Element(1); - e->setComponent(0, i_32); - mPredefinedList.add(Predefined(RS_ELEMENT_USER_I32, e)); - - e = new Element(1); - e->setComponent(0, f_32); - mPredefinedList.add(Predefined(RS_ELEMENT_USER_FLOAT, e)); - - e = new Element(1); - e->setComponent(0, a_8); - mPredefinedList.add(Predefined(RS_ELEMENT_A_8, e)); - - e = new Element(3); - e->setComponent(0, r_5); - e->setComponent(1, g_6); - e->setComponent(2, b_5); - mPredefinedList.add(Predefined(RS_ELEMENT_RGB_565, e)); - - e = new Element(4); - e->setComponent(0, r_5); - e->setComponent(1, g_5); - e->setComponent(2, b_5); - e->setComponent(3, a_1); - mPredefinedList.add(Predefined(RS_ELEMENT_RGBA_5551, e)); - - e = new Element(4); - e->setComponent(0, r_4); - e->setComponent(1, g_4); - e->setComponent(2, b_4); - e->setComponent(3, a_4); - mPredefinedList.add(Predefined(RS_ELEMENT_RGBA_4444, e)); - - e = new Element(3); - e->setComponent(0, r_8); - e->setComponent(1, g_8); - e->setComponent(2, b_8); - mPredefinedList.add(Predefined(RS_ELEMENT_RGB_888, e)); - - e = new Element(4); - e->setComponent(0, r_8); - e->setComponent(1, g_8); - e->setComponent(2, b_8); - e->setComponent(3, a_8); - mPredefinedList.add(Predefined(RS_ELEMENT_RGBA_8888, e)); - - e = new Element(1); - e->setComponent(0, idx_16); - mPredefinedList.add(Predefined(RS_ELEMENT_INDEX_16, e)); - - e = new Element(1); - e->setComponent(0, idx_32); - mPredefinedList.add(Predefined(RS_ELEMENT_INDEX_32, e)); - - e = new Element(2); - e->setComponent(0, x); - e->setComponent(1, y); - mPredefinedList.add(Predefined(RS_ELEMENT_XY_F32, e)); - - e = new Element(3); - e->setComponent(0, x); - e->setComponent(1, y); - e->setComponent(2, z); - mPredefinedList.add(Predefined(RS_ELEMENT_XYZ_F32, e)); - - e = new Element(4); - e->setComponent(0, s); - e->setComponent(1, t); - e->setComponent(2, x); - e->setComponent(3, y); - mPredefinedList.add(Predefined(RS_ELEMENT_ST_XY_F32, e)); - - e = new Element(5); - e->setComponent(0, s); - e->setComponent(1, t); - e->setComponent(2, x); - e->setComponent(3, y); - e->setComponent(4, z); - mPredefinedList.add(Predefined(RS_ELEMENT_ST_XYZ_F32, e)); - - e = new Element(6); - e->setComponent(0, nx); - e->setComponent(1, ny); - e->setComponent(2, nz); - e->setComponent(3, x); - e->setComponent(4, y); - e->setComponent(5, z); - mPredefinedList.add(Predefined(RS_ELEMENT_NORM_XYZ_F32, e)); - - e = new Element(8); - e->setComponent(0, nx); - e->setComponent(1, ny); - e->setComponent(2, nz); - e->setComponent(3, s); - e->setComponent(4, t); - e->setComponent(5, x); - e->setComponent(6, y); - e->setComponent(7, z); - mPredefinedList.add(Predefined(RS_ELEMENT_NORM_ST_XYZ_F32, e)); -} - Element::Element() { @@ -358,39 +194,6 @@ void rsi_ElementBegin(Context *rsc) rsc->mStateElement.mComponentBuildList.clear(); } -void rsi_ElementAddPredefined(Context *rsc, RsElementPredefined predef) -{ - ElementState * sec = &rsc->mStateElement; - - RsElement ve = rsi_ElementGetPredefined(rsc, predef); - const Element *e = static_cast<const Element *>(ve); - - for(size_t ct = 0; ct < sec->mPredefinedList[predef].mElement->getComponentCount(); ct++) { - sec->mComponentBuildList.add(sec->mPredefinedList[predef].mElement->getComponent(ct)); - } -} - -RsElement rsi_ElementGetPredefined(Context *rsc, RsElementPredefined predef) -{ - ElementState * sec = &rsc->mStateElement; - - if (!sec->mPredefinedList.size()) { - sec->initPredefined(); - } - - if ((predef < 0) || - (static_cast<uint32_t>(predef) >= sec->mPredefinedList.size())) { - LOGE("rsElementGetPredefined: Request for bad predefined type"); - // error - return NULL; - } - - rsAssert(sec->mPredefinedList[predef].mEnum == predef); - Element * e = sec->mPredefinedList[predef].mElement; - e->incUserRef(); - return e; -} - void rsi_ElementAdd(Context *rsc, RsDataKind dk, RsDataType dt, bool isNormalized, size_t bits, const char *name) { ElementState * sec = &rsc->mStateElement; diff --git a/libs/rs/rsElement.h b/libs/rs/rsElement.h index 0918522d98ee..7b5a83d291fb 100644 --- a/libs/rs/rsElement.h +++ b/libs/rs/rsElement.h @@ -69,24 +69,6 @@ public: ~ElementState(); Vector<Component *> mComponentBuildList; - - - - struct Predefined { - Predefined() { - mElement = NULL; - } - Predefined(RsElementPredefined en, Element *e) { - mEnum = en; - mElement = e; - } - RsElementPredefined mEnum; - Element * mElement; - }; - Vector<Predefined> mPredefinedList; - - void initPredefined(); - }; diff --git a/libs/rs/rsProgramVertex.cpp b/libs/rs/rsProgramVertex.cpp index a07e166bb74a..dda56d79db35 100644 --- a/libs/rs/rsProgramVertex.cpp +++ b/libs/rs/rsProgramVertex.cpp @@ -133,9 +133,16 @@ ProgramVertexState::~ProgramVertexState() void ProgramVertexState::init(Context *rsc, int32_t w, int32_t h) { + rsi_ElementBegin(rsc); + rsi_ElementAdd(rsc, RS_KIND_USER, RS_TYPE_FLOAT, false, 32, NULL); + RsElement e = rsi_ElementCreate(rsc); + + rsi_TypeBegin(rsc, e); + rsi_TypeAdd(rsc, RS_DIMENSION_X, 48); + mAllocType = rsi_TypeCreate(rsc); + ProgramVertex *pv = new ProgramVertex(NULL, NULL); - Allocation *alloc = (Allocation *) - rsi_AllocationCreatePredefSized(rsc, RS_ELEMENT_USER_FLOAT, 48); + Allocation *alloc = (Allocation *)rsi_AllocationCreateTyped(rsc, mAllocType); mDefaultAlloc.set(alloc); mDefault.set(pv); diff --git a/libs/rs/rsProgramVertex.h b/libs/rs/rsProgramVertex.h index 523c3edd336f..32d147c483c7 100644 --- a/libs/rs/rsProgramVertex.h +++ b/libs/rs/rsProgramVertex.h @@ -64,7 +64,7 @@ public: ObjectBaseRef<ProgramVertex> mLast; ObjectBaseRef<Allocation> mDefaultAlloc; - + RsType mAllocType; ProgramVertex *mPV; |