rsComponent.cpp revision e3929c9bc6f3897e132304faf1b40c3cf1f47474
1d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams/* 2d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams * Copyright (C) 2009 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 19fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#ifndef ANDROID_RS_BUILD_FOR_HOST 20d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams#include <GLES/gl.h> 21fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#else 22fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#include <OpenGL/gl.h> 23fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk#endif 24d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 25d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsusing namespace android; 26d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsusing namespace android::renderscript; 27d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 28d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason SamsComponent::Component() 29d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams{ 30d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams set(RS_TYPE_NONE, RS_KIND_USER, false, 1); 31d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 32d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 33d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason SamsComponent::~Component() 34d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams{ 35d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 36d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 37d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsvoid Component::set(RsDataType dt, RsDataKind dk, bool norm, uint32_t vecSize) 38d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams{ 39d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mType = dt; 40d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mKind = dk; 41d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mNormalized = norm; 42d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mVectorSize = vecSize; 43d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(vecSize <= 4); 44d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 45d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 0; 46d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 0; 47d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = false; 48d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = false; 49d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsPixel = false; 50d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 51d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams switch(mKind) { 52d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_L: 53d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_A: 54d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsPixel = true; 55d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mVectorSize == 1); 56d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mNormalized == true); 57d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 58d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_LA: 59d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsPixel = true; 60d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mVectorSize == 2); 61d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mNormalized == true); 62d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 63d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_RGB: 64d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsPixel = true; 65d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mVectorSize == 3); 66d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mNormalized == true); 67d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 68d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_RGBA: 69d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsPixel = true; 70d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mVectorSize == 4); 71d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mNormalized == true); 72d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 73d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams default: 74d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 75d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams } 76d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 77d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams switch(mType) { 78d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_NONE: 79d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 80d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_5_6_5: 81d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mVectorSize = 3; 82d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 16; 83d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mNormalized = true; 84d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mKind == RS_KIND_PIXEL_RGB); 85d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 86d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_5_5_5_1: 87d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mVectorSize = 4; 88d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 16; 89d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mNormalized = true; 90d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mKind == RS_KIND_PIXEL_RGBA); 91d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 92d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_4_4_4_4: 93d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mVectorSize = 4; 94d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 16; 95d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mNormalized = true; 96d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mKind == RS_KIND_PIXEL_RGBA); 97d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 98d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_ELEMENT: 99d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_TYPE: 100d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_ALLOCATION: 101d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SAMPLER: 102d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SCRIPT: 103d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_MESH: 104d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_PROGRAM_FRAGMENT: 105d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_PROGRAM_VERTEX: 106d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_PROGRAM_RASTER: 107d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_PROGRAM_STORE: 108d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mVectorSize == 1); 109d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mNormalized == false); 110d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams rsAssert(mKind == RS_KIND_USER); 111d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = 32; 112d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 113d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return; 114d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 115d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_FLOAT_16: 116d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 16; 117d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = true; 118d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 119d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_FLOAT_32: 120d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 121d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = true; 122d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 123d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_FLOAT_64: 124d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 64; 125d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsFloat = true; 126d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 127d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_8: 128d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 8; 129d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 130d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 131d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_16: 132d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 16; 133d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 134d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 135d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_32: 136d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 137d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 138d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 139d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_64: 140d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 64; 141d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mIsSigned = true; 142d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 143d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_8: 144d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 8; 145d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 146d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_16: 147d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 16; 148d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 149d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_32: 150d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 32; 151d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 152d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_64: 153d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mTypeBits = 64; 154d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams break; 1555e9811f075f5a96925785a95afeda22592a840acJason Sams 1565e9811f075f5a96925785a95afeda22592a840acJason Sams case RS_TYPE_BOOLEAN: 1575e9811f075f5a96925785a95afeda22592a840acJason Sams mTypeBits = 8; 1585e9811f075f5a96925785a95afeda22592a840acJason Sams break; 159d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams } 160d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 161d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams mBits = mTypeBits * mVectorSize; 162d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 163d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 164e3929c9bc6f3897e132304faf1b40c3cf1f47474Jason Samsbool Component::isReference() const 165e3929c9bc6f3897e132304faf1b40c3cf1f47474Jason Sams{ 166e3929c9bc6f3897e132304faf1b40c3cf1f47474Jason Sams return (mType >= RS_TYPE_ELEMENT); 167e3929c9bc6f3897e132304faf1b40c3cf1f47474Jason Sams} 168d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 169d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 170d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 171d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsuint32_t Component::getGLType() const 172d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams{ 173d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams switch (mType) { 174d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_5_6_5: return GL_UNSIGNED_SHORT_5_6_5; 175d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_5_5_5_1: return GL_UNSIGNED_SHORT_5_5_5_1; 176d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_4_4_4_4: return GL_UNSIGNED_SHORT_4_4_4_4; 177d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 178d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams //case RS_TYPE_FLOAT_16: return GL_HALF_FLOAT; 179d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_FLOAT_32: return GL_FLOAT; 180d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_8: return GL_UNSIGNED_BYTE; 181d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_UNSIGNED_16: return GL_UNSIGNED_SHORT; 182d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_8: return GL_BYTE; 183d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_TYPE_SIGNED_16: return GL_SHORT; 184d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams default: break; 185d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams } 186d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 187d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return 0; 188d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 189d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 190d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsuint32_t Component::getGLFormat() const 191d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams{ 192d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams switch (mKind) { 193d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_L: return GL_LUMINANCE; 194d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_A: return GL_ALPHA; 195d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_LA: return GL_LUMINANCE_ALPHA; 196d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_RGB: return GL_RGB; 197d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams case RS_KIND_PIXEL_RGBA: return GL_RGBA; 198d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams default: break; 199d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams } 200d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams return 0; 201d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 202d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 203b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason SamsString8 Component::getGLSLType() const 204b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams{ 205b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams if (mType == RS_TYPE_SIGNED_32) { 206b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams switch(mVectorSize) { 207b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams case 1: return String8("int"); 208b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams case 2: return String8("ivec2"); 209b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams case 3: return String8("ivec3"); 210b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams case 4: return String8("ivec4"); 211b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams } 212b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams } 213b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams if (mType == RS_TYPE_FLOAT_32) { 214b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams switch(mVectorSize) { 215b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams case 1: return String8("float"); 216b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams case 2: return String8("vec2"); 217b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams case 3: return String8("vec3"); 218b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams case 4: return String8("vec4"); 219b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams } 220b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams } 221b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams return String8(); 222b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams} 223b4d3568f68b1ae97e2a82061cccf220f8e93cd94Jason Sams 224d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsstatic const char * gTypeStrings[] = { 225d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "NONE", 226d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "F16", 227d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "F32", 228d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "F64", 229d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S8", 230d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S16", 231d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S32", 232d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "S64", 233d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U8", 234d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U16", 235d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U32", 236d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "U64", 2375e9811f075f5a96925785a95afeda22592a840acJason Sams "BOOLEAN", 238d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "UP_565", 239d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "UP_5551", 240d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "UP_4444", 241d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "ELEMENT", 242d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "TYPE", 243d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "ALLOCATION", 244d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "SAMPLER", 245d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "SCRIPT", 246d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "MESH", 247d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_FRAGMENT", 248d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_VERTEX", 249d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_RASTER", 250d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PROGRAM_STORE", 251d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams}; 252d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 253d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsstatic const char * gKindStrings[] = { 254d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "USER", 255d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "COLOR", 256d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "POSITION", 257d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "TEXTURE", 258d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "NORMAL", 259d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "INDEX", 260d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "POINT_SIZE", 261d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_L", 262d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_A", 263d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_LA", 264d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_RGB", 265d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams "PIXEL_RGBA", 266d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams}; 267d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 268d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Samsvoid Component::dumpLOGV(const char *prefix) const 269d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams{ 270d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams LOGV("%s Component: %s, %s, vectorSize=%i, bits=%i", 271d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams prefix, gTypeStrings[mType], gKindStrings[mKind], mVectorSize, mBits); 272d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams} 273d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 274fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchoukvoid Component::serialize(OStream *stream) const 275fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk{ 276fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU8((uint8_t)mType); 277fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU8((uint8_t)mKind); 278fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU8((uint8_t)(mNormalized ? 1 : 0)); 279fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk stream->addU32(mVectorSize); 280fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 281fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 282fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchoukvoid Component::loadFromStream(IStream *stream) 283fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk{ 284fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mType = (RsDataType)stream->loadU8(); 285fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mKind = (RsDataKind)stream->loadU8(); 286fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk uint8_t temp = stream->loadU8(); 287fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mNormalized = temp != 0; 288fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk mVectorSize = stream->loadU32(); 289fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 290fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk set(mType, mKind, mNormalized, mVectorSize); 291fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk} 292fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 293fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 294fb6b614bcea88a587a7ea4530be45ff0ffa0210eAlex Sakhartchouk 295d01d970cf5973aa5186cc02c80fb2c143a69b0b1Jason Sams 296