10f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines/* 20f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Copyright (C) 2009-2012 The Android Open Source Project 30f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 40f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 50f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * you may not use this file except in compliance with the License. 60f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * You may obtain a copy of the License at 70f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 80f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * http://www.apache.org/licenses/LICENSE-2.0 90f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * 100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * Unless required by applicable law or agreed to in writing, software 110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * See the License for the specific language governing permissions and 140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines * limitations under the License. 150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines */ 160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines#include "rsComponent.h" 180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesusing namespace android; 200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesusing namespace android::renderscript; 210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesComponent::Component() { 230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines set(RS_TYPE_NONE, RS_KIND_USER, false, 1); 240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen HinesComponent::~Component() { 270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesvoid Component::set(RsDataType dt, RsDataKind dk, bool norm, uint32_t vecSize) { 300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mType = dt; 310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mKind = dk; 320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mNormalized = norm; 330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mVectorSize = vecSize; 340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(vecSize <= 4); 350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mBits = 0; 370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 0; 380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsFloat = false; 390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsSigned = false; 400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsPixel = false; 410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines switch (mKind) { 430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_KIND_PIXEL_L: 440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_KIND_PIXEL_A: 450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsPixel = true; 460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mVectorSize == 1); 470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mNormalized == true); 480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_KIND_PIXEL_LA: 500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsPixel = true; 510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mVectorSize == 2); 520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mNormalized == true); 530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_KIND_PIXEL_RGB: 550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsPixel = true; 560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mVectorSize == 3); 570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mNormalized == true); 580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_KIND_PIXEL_RGBA: 600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsPixel = true; 610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mVectorSize == 4); 620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mNormalized == true); 630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines default: 650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mKind != RS_KIND_INVALID); 660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines } 680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines switch (mType) { 700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_NONE: 710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return; 720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_UNSIGNED_5_6_5: 730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mVectorSize = 3; 740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mBits = 16; 750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mNormalized = true; 760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mKind == RS_KIND_PIXEL_RGB); 770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return; 780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_UNSIGNED_5_5_5_1: 790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mVectorSize = 4; 800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mBits = 16; 810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mNormalized = true; 820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mKind == RS_KIND_PIXEL_RGBA); 830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return; 840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_UNSIGNED_4_4_4_4: 850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mVectorSize = 4; 860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mBits = 16; 870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mNormalized = true; 880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mKind == RS_KIND_PIXEL_RGBA); 890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return; 900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_MATRIX_4X4: 920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 16 * 32; 930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mVectorSize == 1); 940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mNormalized == false); 950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mKind == RS_KIND_USER); 960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_MATRIX_3X3: 980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 9 * 32; 990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mVectorSize == 1); 1000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mNormalized == false); 1010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mKind == RS_KIND_USER); 1020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_MATRIX_2X2: 1040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 4 * 32; 1050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mVectorSize == 1); 1060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mNormalized == false); 1070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mKind == RS_KIND_USER); 1080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_ELEMENT: 1110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_TYPE: 1120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_ALLOCATION: 1130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_SAMPLER: 1140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_SCRIPT: 1150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_MESH: 1160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_PROGRAM_FRAGMENT: 1170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_PROGRAM_VERTEX: 1180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_PROGRAM_RASTER: 1190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_PROGRAM_STORE: 1200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_FONT: 1210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mVectorSize == 1); 1220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mNormalized == false); 1230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mKind == RS_KIND_USER); 1240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mBits = 32; 1250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 32; 1260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return; 1270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_FLOAT_16: 1290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 16; 1300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsFloat = true; 1310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_FLOAT_32: 1330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 32; 1340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsFloat = true; 1350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_FLOAT_64: 1370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 64; 1380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsFloat = true; 1390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_SIGNED_8: 1410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 8; 1420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsSigned = true; 1430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_SIGNED_16: 1450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 16; 1460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsSigned = true; 1470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_SIGNED_32: 1490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 32; 1500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsSigned = true; 1510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_SIGNED_64: 1530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 64; 1540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mIsSigned = true; 1550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_UNSIGNED_8: 1570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 8; 1580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_UNSIGNED_16: 1600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 16; 1610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_UNSIGNED_32: 1630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 32; 1640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_UNSIGNED_64: 1660f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 64; 1670f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1680f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1690f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines case RS_TYPE_BOOLEAN: 1700f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mTypeBits = 8; 1710f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1720f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines default: 1730f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(mType != RS_TYPE_INVALID); 1740f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines rsAssert(0); 1750f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines break; 1760f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines } 1770f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1780f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mBitsUnpadded = mTypeBits * mVectorSize; 1790f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mBits = mTypeBits * rsHigherPow2(mVectorSize); 1800f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1810f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1820f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesbool Component::isReference() const { 1830f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines return (mType >= RS_TYPE_ELEMENT); 1840f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 1850f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 1860f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic const char * gTypeBasicStrings[] = { 1870f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "NONE", 1880f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "F16", 1890f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "F32", 1900f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "F64", 1910f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "S8", 1920f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "S16", 1930f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "S32", 1940f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "S64", 1950f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "U8", 1960f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "U16", 1970f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "U32", 1980f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "U64", 1990f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "BOOLEAN", 2000f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "UP_565", 2010f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "UP_5551", 2020f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "UP_4444", 2030f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "MATRIX_4X4", 2040f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "MATRIX_3X3", 2050f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "MATRIX_2X2", 2060f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}; 2070f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2080f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic const char * gTypeObjStrings[] = { 2090f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "ELEMENT", 2100f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "TYPE", 2110f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "ALLOCATION", 2120f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "SAMPLER", 2130f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "SCRIPT", 2140f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "MESH", 2150f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "PROGRAM_FRAGMENT", 2160f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "PROGRAM_VERTEX", 2170f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "PROGRAM_RASTER", 2180f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "PROGRAM_STORE", 2190f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}; 2200f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2210f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesstatic const char * gKindStrings[] = { 2220f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "USER", 2230f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "COLOR", 2240f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "POSITION", 2250f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "TEXTURE", 2260f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "NORMAL", 2270f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "INDEX", 2280f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "POINT_SIZE", 2290f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "PIXEL_L", 2300f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "PIXEL_A", 2310f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "PIXEL_LA", 2320f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "PIXEL_RGB", 2330f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines "PIXEL_RGBA", 2340f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines}; 2350f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2360f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesvoid Component::dumpLOGV(const char *prefix) const { 2370f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines if (mType >= RS_TYPE_ELEMENT) { 2380f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGV("%s Component: %s, %s, vectorSize=%i, bits=%i", 2390f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines prefix, gTypeObjStrings[mType - RS_TYPE_ELEMENT], gKindStrings[mKind], mVectorSize, mBits); 2400f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines } else { 2410f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines ALOGV("%s Component: %s, %s, vectorSize=%i, bits=%i", 2420f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines prefix, gTypeBasicStrings[mType], gKindStrings[mKind], mVectorSize, mBits); 2430f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines } 2440f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2450f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2460f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesvoid Component::serialize(OStream *stream) const { 2470f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines stream->addU8((uint8_t)mType); 2480f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines stream->addU8((uint8_t)mKind); 2490f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines stream->addU8((uint8_t)(mNormalized ? 1 : 0)); 2500f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines stream->addU32(mVectorSize); 2510f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2520f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2530f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hinesvoid Component::loadFromStream(IStream *stream) { 2540f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mType = (RsDataType)stream->loadU8(); 2550f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mKind = (RsDataKind)stream->loadU8(); 2560f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines uint8_t temp = stream->loadU8(); 2570f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mNormalized = temp != 0; 2580f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines mVectorSize = stream->loadU32(); 2590f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2600f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines set(mType, mKind, mNormalized, mVectorSize); 2610f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines} 2620f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2630f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2640f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 2650f6f72e19db852cc253fd2fc05459abdf8d5c3afStephen Hines 266