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); 130d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 32; 131d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 132d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 133d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 134d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_FLOAT_16: 135d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 16; 136d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = true; 137d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 138d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_FLOAT_32: 139d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 140d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = true; 141d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 142d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_FLOAT_64: 143d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 64; 144d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = true; 145d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 146d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_8: 147d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 8; 148d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 149d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 150d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_16: 151d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 16; 152d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 153d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 154d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_32: 155d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 156d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 157d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 158d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_64: 159d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 64; 160d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 161d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 162d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_8: 163d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 8; 164d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 165d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_16: 166d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 16; 167d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 168d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_32: 169d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 170d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 171d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_64: 172d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 64; 173d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 1745e9811f075f5a96925785a95afeda22592a840acJason Sams 1755e9811f075f5a96925785a95afeda22592a840acJason Sams case RS_TYPE_BOOLEAN: 1765e9811f075f5a96925785a95afeda22592a840acJason Sams mTypeBits = 8; 1775e9811f075f5a96925785a95afeda22592a840acJason Sams break; 17825a59d051a218bd608b005a149509464b3e6d4f0Alex Sakhartchouk default: 17925a59d051a218bd608b005a149509464b3e6d4f0Alex Sakhartchouk rsAssert(mType != RS_TYPE_INVALID); 180ae8b795a673b75bf0aec72620f4530db1415f907Stephen Hines rsAssert(0); 18125a59d051a218bd608b005a149509464b3e6d4f0Alex Sakhartchouk break; 182d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams } 183d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 1842d1220c27ae91f0b307f283fe66cb767b63dfe38Alex Sakhartchouk mBitsUnpadded = mTypeBits * mVectorSize; 1852d1220c27ae91f0b307f283fe66cb767b63dfe38Alex Sakhartchouk mBits = mTypeBits * rsHigherPow2(mVectorSize); 186d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 187d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 188afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukbool Component::isReference() const { 189e3929c9bc6f3897e132304faf1b40c3cf1f47474Jason Sams return (mType >= RS_TYPE_ELEMENT); 190e3929c9bc6f3897e132304faf1b40c3cf1f47474Jason Sams} 191d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 19239cd317d983410055d780d00666f724c5faeaba9Jason Samsstatic const char * gTypeBasicStrings[] = { 193d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "NONE", 194d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "F16", 195d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "F32", 196d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "F64", 197d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S8", 198d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S16", 199d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S32", 200d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S64", 201d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U8", 202d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U16", 203d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U32", 204d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U64", 2055e9811f075f5a96925785a95afeda22592a840acJason Sams "BOOLEAN", 206d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "UP_565", 207d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "UP_5551", 208d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "UP_4444", 20939cd317d983410055d780d00666f724c5faeaba9Jason Sams "MATRIX_4X4", 21039cd317d983410055d780d00666f724c5faeaba9Jason Sams "MATRIX_3X3", 21139cd317d983410055d780d00666f724c5faeaba9Jason Sams "MATRIX_2X2", 21239cd317d983410055d780d00666f724c5faeaba9Jason Sams}; 21339cd317d983410055d780d00666f724c5faeaba9Jason Sams 21439cd317d983410055d780d00666f724c5faeaba9Jason Samsstatic const char * gTypeObjStrings[] = { 215d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "ELEMENT", 216d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "TYPE", 217d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "ALLOCATION", 218d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "SAMPLER", 219d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "SCRIPT", 220d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "MESH", 221d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_FRAGMENT", 222d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_VERTEX", 223d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_RASTER", 224d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_STORE", 225d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams}; 226d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 227d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsstatic const char * gKindStrings[] = { 228d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "USER", 229d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "COLOR", 230d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "POSITION", 231d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "TEXTURE", 232d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "NORMAL", 233d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "INDEX", 234d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "POINT_SIZE", 235d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_L", 236d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_A", 237d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_LA", 238d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_RGB", 239d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_RGBA", 240d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams}; 241d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 242afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Component::dumpLOGV(const char *prefix) const { 24339cd317d983410055d780d00666f724c5faeaba9Jason Sams if (mType >= RS_TYPE_ELEMENT) { 2446598201f1c4f409defac9a5af789fb53a7cc00f8Steve Block ALOGV("%s Component: %s, %s, vectorSize=%i, bits=%i", 24539cd317d983410055d780d00666f724c5faeaba9Jason Sams prefix, gTypeObjStrings[mType - RS_TYPE_ELEMENT], gKindStrings[mKind], mVectorSize, mBits); 24639cd317d983410055d780d00666f724c5faeaba9Jason Sams } else { 2476598201f1c4f409defac9a5af789fb53a7cc00f8Steve Block ALOGV("%s Component: %s, %s, vectorSize=%i, bits=%i", 24839cd317d983410055d780d00666f724c5faeaba9Jason Sams prefix, gTypeBasicStrings[mType], gKindStrings[mKind], mVectorSize, mBits); 24939cd317d983410055d780d00666f724c5faeaba9Jason Sams } 250d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 251d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 252afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Component::serialize(OStream *stream) const { 253fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU8((uint8_t)mType); 254fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU8((uint8_t)mKind); 255fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU8((uint8_t)(mNormalized ? 1 : 0)); 256fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU32(mVectorSize); 257fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 258fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 259afb743aca56c18beb7ab924e75cb6e070ef3e55aAlex Sakhartchoukvoid Component::loadFromStream(IStream *stream) { 260fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mType = (RsDataType)stream->loadU8(); 261fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mKind = (RsDataKind)stream->loadU8(); 262fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk uint8_t temp = stream->loadU8(); 263fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mNormalized = temp != 0; 264fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mVectorSize = stream->loadU32(); 265fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 266fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk set(mType, mKind, mNormalized, mVectorSize); 267fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 268fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 269fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 270fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 271d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 272