summaryrefslogtreecommitdiff
path: root/libs/rs/rsComponent.cpp
diff options
context:
space:
mode:
author Jason Sams <rjsams@android.com> 2010-08-25 14:31:48 -0700
committer Jason Sams <rjsams@android.com> 2010-08-25 14:41:20 -0700
commit1d45c47975ab2a8cef6db5a8976276de31e1e8d0 (patch)
tree1db2203004e52f51e4f0296adf4d4c332ea3dd56 /libs/rs/rsComponent.cpp
parent7462fc738fdaa5095d42f6176940c7111a2a54ac (diff)
Add matrix component types.
Fix potental overflow in script -> java messages. Change-Id: Ie6fd9dc376be4043fc938a1517106936937689c8
Diffstat (limited to 'libs/rs/rsComponent.cpp')
-rw-r--r--libs/rs/rsComponent.cpp46
1 files changed, 43 insertions, 3 deletions
diff --git a/libs/rs/rsComponent.cpp b/libs/rs/rsComponent.cpp
index fbaa75f68c31..f51b23e96c36 100644
--- a/libs/rs/rsComponent.cpp
+++ b/libs/rs/rsComponent.cpp
@@ -95,6 +95,26 @@ void Component::set(RsDataType dt, RsDataKind dk, bool norm, uint32_t vecSize)
mNormalized = true;
rsAssert(mKind == RS_KIND_PIXEL_RGBA);
return;
+
+ case RS_TYPE_MATRIX_4X4:
+ mTypeBits = 16 * 32;
+ rsAssert(mVectorSize == 1);
+ rsAssert(mNormalized == false);
+ rsAssert(mKind == RS_KIND_USER);
+ break;
+ case RS_TYPE_MATRIX_3X3:
+ mTypeBits = 9 * 32;
+ rsAssert(mVectorSize == 1);
+ rsAssert(mNormalized == false);
+ rsAssert(mKind == RS_KIND_USER);
+ break;
+ case RS_TYPE_MATRIX_2X2:
+ mTypeBits = 4 * 32;
+ rsAssert(mVectorSize == 1);
+ rsAssert(mNormalized == false);
+ rsAssert(mKind == RS_KIND_USER);
+ break;
+
case RS_TYPE_ELEMENT:
case RS_TYPE_TYPE:
case RS_TYPE_ALLOCATION:
@@ -218,10 +238,19 @@ String8 Component::getGLSLType() const
case 4: return String8("vec4");
}
}
+ if ((mType == RS_TYPE_MATRIX_4X4) && (mVectorSize == 1)) {
+ return String8("mat4");
+ }
+ if ((mType == RS_TYPE_MATRIX_3X3) && (mVectorSize == 1)) {
+ return String8("mat3");
+ }
+ if ((mType == RS_TYPE_MATRIX_2X2) && (mVectorSize == 1)) {
+ return String8("mat2");
+ }
return String8();
}
-static const char * gTypeStrings[] = {
+static const char * gTypeBasicStrings[] = {
"NONE",
"F16",
"F32",
@@ -238,6 +267,12 @@ static const char * gTypeStrings[] = {
"UP_565",
"UP_5551",
"UP_4444",
+ "MATRIX_4X4",
+ "MATRIX_3X3",
+ "MATRIX_2X2",
+};
+
+static const char * gTypeObjStrings[] = {
"ELEMENT",
"TYPE",
"ALLOCATION",
@@ -267,8 +302,13 @@ static const char * gKindStrings[] = {
void Component::dumpLOGV(const char *prefix) const
{
- LOGV("%s Component: %s, %s, vectorSize=%i, bits=%i",
- prefix, gTypeStrings[mType], gKindStrings[mKind], mVectorSize, mBits);
+ if (mType >= RS_TYPE_ELEMENT) {
+ LOGV("%s Component: %s, %s, vectorSize=%i, bits=%i",
+ prefix, gTypeObjStrings[mType - RS_TYPE_ELEMENT], gKindStrings[mKind], mVectorSize, mBits);
+ } else {
+ LOGV("%s Component: %s, %s, vectorSize=%i, bits=%i",
+ prefix, gTypeBasicStrings[mType], gKindStrings[mKind], mVectorSize, mBits);
+ }
}
void Component::serialize(OStream *stream) const