diff options
Diffstat (limited to 'libs/rs')
| -rw-r--r-- | libs/rs/RenderScript.h | 8 | ||||
| -rw-r--r-- | libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java | 11 | ||||
| -rw-r--r-- | libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs | 4 | ||||
| -rw-r--r-- | libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs | 4 | ||||
| -rw-r--r-- | libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh | 11 | ||||
| -rw-r--r-- | libs/rs/rsComponent.cpp | 46 | ||||
| -rw-r--r-- | libs/rs/rsContext.cpp | 2 |
7 files changed, 58 insertions, 28 deletions
diff --git a/libs/rs/RenderScript.h b/libs/rs/RenderScript.h index 3406287..7902b9a 100644 --- a/libs/rs/RenderScript.h +++ b/libs/rs/RenderScript.h @@ -91,7 +91,11 @@ enum RsDataType { RS_TYPE_UNSIGNED_5_5_5_1, RS_TYPE_UNSIGNED_4_4_4_4, - RS_TYPE_ELEMENT, + RS_TYPE_MATRIX_4X4, + RS_TYPE_MATRIX_3X3, + RS_TYPE_MATRIX_2X2, + + RS_TYPE_ELEMENT = 1000, RS_TYPE_TYPE, RS_TYPE_ALLOCATION, RS_TYPE_SAMPLER, @@ -100,7 +104,7 @@ enum RsDataType { RS_TYPE_PROGRAM_FRAGMENT, RS_TYPE_PROGRAM_VERTEX, RS_TYPE_PROGRAM_RASTER, - RS_TYPE_PROGRAM_STORE + RS_TYPE_PROGRAM_STORE, }; enum RsDataKind { diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java index bfc9bb7..e70e811 100644 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java +++ b/libs/rs/java/ModelViewer/src/com/android/modelviewer/SgTransform.java @@ -82,15 +82,8 @@ public class SgTransform { void setData() { - mTransformData.globalMat_Row0 = new Float4(1, 0, 0, 0); - mTransformData.globalMat_Row1 = new Float4(0, 1, 0, 0); - mTransformData.globalMat_Row2 = new Float4(0, 0, 1, 0); - mTransformData.globalMat_Row3 = new Float4(0, 0, 0, 1); - - mTransformData.localMat_Row0 = new Float4(1, 0, 0, 0); - mTransformData.localMat_Row1 = new Float4(0, 1, 0, 0); - mTransformData.localMat_Row2 = new Float4(0, 0, 1, 0); - mTransformData.localMat_Row3 = new Float4(0, 0, 0, 1); + mTransformData.globalMat = new Matrix4f(); + mTransformData.localMat = new Matrix4f(); mTransformData.transforms0 = mTransforms[0]; mTransformData.transforms1 = mTransforms[1]; diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs b/libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs index 8053306..c794438 100644 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs +++ b/libs/rs/java/ModelViewer/src/com/android/modelviewer/scenegraph.rs @@ -76,10 +76,10 @@ int root(int launchID) { rsgBindProgramStore(gPFSBackground); rsgBindTexture(gPFBackground, 0, gTGrid); - rsgProgramVertexLoadModelMatrix((rs_matrix4x4 *)&robot1Ptr->globalMat_Row0); + rsgProgramVertexLoadModelMatrix(&robot1Ptr->globalMat); rsgDrawMesh(gTestMesh); - rsgProgramVertexLoadModelMatrix((rs_matrix4x4 *)&robot2Ptr->globalMat_Row0); + rsgProgramVertexLoadModelMatrix(&robot2Ptr->globalMat); rsgDrawMesh(gTestMesh); color(0.3f, 0.3f, 0.3f, 1.0f); diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs b/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs index 7b9cd1c..2ef29cf 100644 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs +++ b/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform.rs @@ -52,8 +52,8 @@ void root(const void *v_in, void *v_out, const void *usrData, uint32_t x, uint32 //rsDebug("Transform data", (int)data); //rsDebug("Entering parent", (int)parent); - rs_matrix4x4 *localMat = (rs_matrix4x4*)&data->localMat_Row0; - rs_matrix4x4 *globalMat = (rs_matrix4x4*)&data->globalMat_Row0; + rs_matrix4x4 *localMat = &data->localMat; + rs_matrix4x4 *globalMat = &data->globalMat; ParentData toChild; toChild.changed = 0; diff --git a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh b/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh index a66e6c5..5c872a7 100644 --- a/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh +++ b/libs/rs/java/ModelViewer/src/com/android/modelviewer/transform_def.rsh @@ -22,15 +22,8 @@ #define TRANSFORM_SCALE 3 typedef struct { - float4 globalMat_Row0; - float4 globalMat_Row1; - float4 globalMat_Row2; - float4 globalMat_Row3; - - float4 localMat_Row0; - float4 localMat_Row1; - float4 localMat_Row2; - float4 localMat_Row3; + rs_matrix4x4 globalMat; + rs_matrix4x4 localMat; float4 transforms0; float4 transforms1; diff --git a/libs/rs/rsComponent.cpp b/libs/rs/rsComponent.cpp index fbaa75f..f51b23e 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 diff --git a/libs/rs/rsContext.cpp b/libs/rs/rsContext.cpp index 08dd57b..f67a9d5 100644 --- a/libs/rs/rsContext.cpp +++ b/libs/rs/rsContext.cpp @@ -713,10 +713,10 @@ void Context::removeName(ObjectBase *obj) uint32_t Context::getMessageToClient(void *data, size_t *receiveLen, size_t bufferLen, bool wait) { //LOGE("getMessageToClient %i %i", bufferLen, wait); + *receiveLen = 0; if (!wait) { if (mIO.mToClient.isEmpty()) { // No message to get and not going to wait for one. - receiveLen = 0; return 0; } } |
