1d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams/* 2bc0ca6ba4e31239bf77060578d0bdf1a10e04168Jason Sams * Copyright (C) 2013 The Android Open Source Project 3d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * 4d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * you may not use this file except in compliance with the License. 6d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * You may obtain a copy of the License at 7d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * 8d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * 10d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * Unless required by applicable law or agreed to in writing, software 11d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * See the License for the specific language governing permissions and 14d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * limitations under the License. 15d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams */ 16d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 17d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams#include "rsComponent.h" 18d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 19d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsusing namespace android; 20d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsusing namespace android::renderscript; 21d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 22afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukComponent::Component() { 23d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams set(RS_TYPE_NONE, RS_KIND_USER, false, 1); 24d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 25d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 26afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex SakhartchoukComponent::~Component() { 27d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 28d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 29afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Component::set(RsDataType dt, RsDataKind dk, bool norm, uint32_t vecSize) { 30d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mType = dt; 31d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mKind = dk; 32d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mNormalized = norm; 33d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mVectorSize = vecSize; 34d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(vecSize <= 4); 35d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 36d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 0; 37d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 0; 38d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = false; 39d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = false; 40d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsPixel = false; 41d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 42afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchouk switch (mKind) { 43d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_L: 44d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_A: 45d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsPixel = true; 46d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mVectorSize == 1); 47d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mNormalized == true); 48d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 49d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_LA: 50d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsPixel = true; 51d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mVectorSize == 2); 52d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mNormalized == true); 53d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 54d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_RGB: 55d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsPixel = true; 56d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mVectorSize == 3); 57d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mNormalized == true); 58d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 59d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_RGBA: 60d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsPixel = true; 61d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mVectorSize == 4); 62d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mNormalized == true); 63d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 64bc0ca6ba4e31239bf77060578d0bdf1a10e04168Jason Sams case RS_KIND_PIXEL_YUV: 65bc0ca6ba4e31239bf77060578d0bdf1a10e04168Jason Sams mIsPixel = true; 66bc0ca6ba4e31239bf77060578d0bdf1a10e04168Jason Sams rsAssert(mVectorSize == 1); 67bc0ca6ba4e31239bf77060578d0bdf1a10e04168Jason Sams rsAssert(mNormalized == true); 68bc0ca6ba4e31239bf77060578d0bdf1a10e04168Jason Sams break; 69bc0ca6ba4e31239bf77060578d0bdf1a10e04168Jason Sams 70d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams default: 7125a59d051a218bd608b005a149509464b3e6d4f0Alex Sakhartchouk rsAssert(mKind != RS_KIND_INVALID); 72d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 73d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams } 74d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 75afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchouk switch (mType) { 76d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_NONE: 77d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 78d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_5_6_5: 79d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mVectorSize = 3; 80d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 16; 81d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mNormalized = true; 82d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mKind == RS_KIND_PIXEL_RGB); 83d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 84d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_5_5_5_1: 85d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mVectorSize = 4; 86d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 16; 87d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mNormalized = true; 88d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mKind == RS_KIND_PIXEL_RGBA); 89d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 90d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_4_4_4_4: 91d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mVectorSize = 4; 92d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 16; 93d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mNormalized = true; 94d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mKind == RS_KIND_PIXEL_RGBA); 95d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 9639cd317d983410055d780d00666f724c5faeaba9Jason Sams 9739cd317d983410055d780d00666f724c5faeaba9Jason Sams case RS_TYPE_MATRIX_4X4: 9839cd317d983410055d780d00666f724c5faeaba9Jason Sams mTypeBits = 16 * 32; 9939cd317d983410055d780d00666f724c5faeaba9Jason Sams rsAssert(mVectorSize == 1); 10039cd317d983410055d780d00666f724c5faeaba9Jason Sams rsAssert(mNormalized == false); 10139cd317d983410055d780d00666f724c5faeaba9Jason Sams rsAssert(mKind == RS_KIND_USER); 10239cd317d983410055d780d00666f724c5faeaba9Jason Sams break; 10339cd317d983410055d780d00666f724c5faeaba9Jason Sams case RS_TYPE_MATRIX_3X3: 10439cd317d983410055d780d00666f724c5faeaba9Jason Sams mTypeBits = 9 * 32; 10539cd317d983410055d780d00666f724c5faeaba9Jason Sams rsAssert(mVectorSize == 1); 10639cd317d983410055d780d00666f724c5faeaba9Jason Sams rsAssert(mNormalized == false); 10739cd317d983410055d780d00666f724c5faeaba9Jason Sams rsAssert(mKind == RS_KIND_USER); 10839cd317d983410055d780d00666f724c5faeaba9Jason Sams break; 10939cd317d983410055d780d00666f724c5faeaba9Jason Sams case RS_TYPE_MATRIX_2X2: 11039cd317d983410055d780d00666f724c5faeaba9Jason Sams mTypeBits = 4 * 32; 11139cd317d983410055d780d00666f724c5faeaba9Jason Sams rsAssert(mVectorSize == 1); 11239cd317d983410055d780d00666f724c5faeaba9Jason Sams rsAssert(mNormalized == false); 11339cd317d983410055d780d00666f724c5faeaba9Jason Sams rsAssert(mKind == RS_KIND_USER); 11439cd317d983410055d780d00666f724c5faeaba9Jason Sams break; 11539cd317d983410055d780d00666f724c5faeaba9Jason Sams 116d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_ELEMENT: 117d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_TYPE: 118d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_ALLOCATION: 119d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SAMPLER: 120d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SCRIPT: 121d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_MESH: 122d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_PROGRAM_FRAGMENT: 123d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_PROGRAM_VERTEX: 124d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_PROGRAM_RASTER: 125d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_PROGRAM_STORE: 126ae8b795a673b75bf0aec72620f4530db1415f907Stephen Hines case RS_TYPE_FONT: 127d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mVectorSize == 1); 128d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mNormalized == false); 129d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mKind == RS_KIND_USER); 1307202c92865348d20eeb9d7816f6b8245dd97605fStephen Hines#ifdef __LP64__ 1317202c92865348d20eeb9d7816f6b8245dd97605fStephen Hines // Large object pointers on 64-bit targets. 1327202c92865348d20eeb9d7816f6b8245dd97605fStephen Hines mBits = 256; 1337202c92865348d20eeb9d7816f6b8245dd97605fStephen Hines mTypeBits = 256; 1347202c92865348d20eeb9d7816f6b8245dd97605fStephen Hines#else 1357202c92865348d20eeb9d7816f6b8245dd97605fStephen Hines // Single pointer objects on 32-bit targets. 136d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 32; 137d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 1387202c92865348d20eeb9d7816f6b8245dd97605fStephen Hines#endif // __LP64__ 139d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 140d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 141d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_FLOAT_16: 142d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 16; 143d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = true; 144d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 145d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_FLOAT_32: 146d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 147d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = true; 148d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 149d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_FLOAT_64: 150d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 64; 151d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = true; 152d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 153d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_8: 154d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 8; 155d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 156d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 157d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_16: 158d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 16; 159d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 160d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 161d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_32: 162d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 163d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 164d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 165d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_64: 166d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 64; 167d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 168d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 169d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_8: 170d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 8; 171d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 172d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_16: 173d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 16; 174d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 175d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_32: 176d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 177d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 178d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_64: 179d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 64; 180d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 1815e9811f075f5a96925785a95afeda22592a840acJason Sams 1825e9811f075f5a96925785a95afeda22592a840acJason Sams case RS_TYPE_BOOLEAN: 1835e9811f075f5a96925785a95afeda22592a840acJason Sams mTypeBits = 8; 1845e9811f075f5a96925785a95afeda22592a840acJason Sams break; 18525a59d051a218bd608b005a149509464b3e6d4f0Alex Sakhartchouk default: 18625a59d051a218bd608b005a149509464b3e6d4f0Alex Sakhartchouk rsAssert(mType != RS_TYPE_INVALID); 187ae8b795a673b75bf0aec72620f4530db1415f907Stephen Hines rsAssert(0); 18825a59d051a218bd608b005a149509464b3e6d4f0Alex Sakhartchouk break; 189d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams } 190d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 1912d1220c27ae91f0b307f283fe66cb767b63dfe38Alex Sakhartchouk mBitsUnpadded = mTypeBits * mVectorSize; 1922d1220c27ae91f0b307f283fe66cb767b63dfe38Alex Sakhartchouk mBits = mTypeBits * rsHigherPow2(mVectorSize); 193d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 194d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 195afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukbool Component::isReference() const { 196e3929c9bc6f3897e132304faf1b40c3cf1f47474Jason Sams return (mType >= RS_TYPE_ELEMENT); 197e3929c9bc6f3897e132304faf1b40c3cf1f47474Jason Sams} 198d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 19939cd317d983410055d780d00666f724c5faeaba9Jason Samsstatic const char * gTypeBasicStrings[] = { 200d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "NONE", 201d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "F16", 202d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "F32", 203d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "F64", 204d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S8", 205d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S16", 206d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S32", 207d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S64", 208d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U8", 209d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U16", 210d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U32", 211d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U64", 2125e9811f075f5a96925785a95afeda22592a840acJason Sams "BOOLEAN", 213d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "UP_565", 214d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "UP_5551", 215d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "UP_4444", 21639cd317d983410055d780d00666f724c5faeaba9Jason Sams "MATRIX_4X4", 21739cd317d983410055d780d00666f724c5faeaba9Jason Sams "MATRIX_3X3", 21839cd317d983410055d780d00666f724c5faeaba9Jason Sams "MATRIX_2X2", 21939cd317d983410055d780d00666f724c5faeaba9Jason Sams}; 22039cd317d983410055d780d00666f724c5faeaba9Jason Sams 22139cd317d983410055d780d00666f724c5faeaba9Jason Samsstatic const char * gTypeObjStrings[] = { 222d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "ELEMENT", 223d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "TYPE", 224d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "ALLOCATION", 225d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "SAMPLER", 226d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "SCRIPT", 227d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "MESH", 228d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_FRAGMENT", 229d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_VERTEX", 230d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_RASTER", 231d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_STORE", 232d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams}; 233d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 234d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsstatic const char * gKindStrings[] = { 235d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "USER", 236d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "COLOR", 237d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "POSITION", 238d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "TEXTURE", 239d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "NORMAL", 240d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "INDEX", 241d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "POINT_SIZE", 242d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_L", 243d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_A", 244d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_LA", 245d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_RGB", 246d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_RGBA", 247d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams}; 248d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 249afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Component::dumpLOGV(const char *prefix) const { 25039cd317d983410055d780d00666f724c5faeaba9Jason Sams if (mType >= RS_TYPE_ELEMENT) { 2516598201f1c4f409defac9a5af789fb53a7cc00f8Steve Block ALOGV("%s Component: %s, %s, vectorSize=%i, bits=%i", 25239cd317d983410055d780d00666f724c5faeaba9Jason Sams prefix, gTypeObjStrings[mType - RS_TYPE_ELEMENT], gKindStrings[mKind], mVectorSize, mBits); 25339cd317d983410055d780d00666f724c5faeaba9Jason Sams } else { 2546598201f1c4f409defac9a5af789fb53a7cc00f8Steve Block ALOGV("%s Component: %s, %s, vectorSize=%i, bits=%i", 25539cd317d983410055d780d00666f724c5faeaba9Jason Sams prefix, gTypeBasicStrings[mType], gKindStrings[mKind], mVectorSize, mBits); 25639cd317d983410055d780d00666f724c5faeaba9Jason Sams } 257d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 258d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 259afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Component::serialize(OStream *stream) const { 260fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU8((uint8_t)mType); 261fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU8((uint8_t)mKind); 262fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU8((uint8_t)(mNormalized ? 1 : 0)); 263fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU32(mVectorSize); 264fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 265fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 266afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Component::loadFromStream(IStream *stream) { 267fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mType = (RsDataType)stream->loadU8(); 268fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mKind = (RsDataKind)stream->loadU8(); 269fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk uint8_t temp = stream->loadU8(); 270fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mNormalized = temp != 0; 271fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mVectorSize = stream->loadU32(); 272fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 273fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk set(mType, mKind, mNormalized, mVectorSize); 274fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 275fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 276fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 277fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 278d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 279