Remove experimental perspective projection

Change-Id: Iad688c8395ccd4673cc129973802b5f01dfb45ba
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp
index f02e591..69d3328 100644
--- a/libs/hwui/Caches.cpp
+++ b/libs/hwui/Caches.cpp
@@ -702,9 +702,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 void Caches::initTempProperties() {
-    propertyDirtyViewport = false;
-    propertyEnable3d = false;
-    propertyCameraDistance = 1.0f;
     propertyAmbientShadowStrength = 25;
     propertySpotShadowStrength = 25;
 
@@ -715,17 +712,7 @@
 
 void Caches::setTempProperty(const char* name, const char* value) {
     ALOGD("setting property %s to %s", name, value);
-    if (!strcmp(name, "enable3d")) {
-        propertyEnable3d = !strcmp(value, "true");
-        propertyDirtyViewport = true;
-        ALOGD("enable3d = %d", propertyEnable3d);
-        return;
-    } else if (!strcmp(name, "cameraDistance")) {
-        propertyCameraDistance = fmin(fmax(atof(value), 0.001), 10);
-        propertyDirtyViewport = true;
-        ALOGD("camera dist multiplier = %.2f", propertyCameraDistance);
-        return;
-    } else if (!strcmp(name, "ambientShadowStrength")) {
+    if (!strcmp(name, "ambientShadowStrength")) {
         propertyAmbientShadowStrength = atoi(value);
         ALOGD("ambient shadow strength = 0x%x out of 0xff", propertyAmbientShadowStrength);
         return;
@@ -735,17 +722,14 @@
         return;
     } else if (!strcmp(name, "lightPosXScale")) {
         propertyLightPosXScale = fmin(fmax(atof(value), 0.0), 1.0);
-        propertyDirtyViewport = true;
         ALOGD("lightPos X Scale = %.2f", propertyLightPosXScale);
         return;
     }  else if (!strcmp(name, "lightPosYScale")) {
         propertyLightPosYScale = fmin(fmax(atof(value), 0.0), 1.0);
-        propertyDirtyViewport = true;
         ALOGD("lightPos Y Scale = %.2f", propertyLightPosXScale);
         return;
     }  else if (!strcmp(name, "lightPosZScale")) {
         propertyLightPosZScale = fmin(fmax(atof(value), 0.0), 1.0);
-        propertyDirtyViewport = true;
         ALOGD("lightPos Z Scale = %.2f", propertyLightPosXScale);
         return;
     }
diff --git a/libs/hwui/Caches.h b/libs/hwui/Caches.h
index 8c0c508..6f3d8fb 100644
--- a/libs/hwui/Caches.h
+++ b/libs/hwui/Caches.h
@@ -356,9 +356,6 @@
     // TEMPORARY properties
     void initTempProperties();
     void setTempProperty(const char* name, const char* value);
-    bool propertyEnable3d;
-    bool propertyDirtyViewport; // flag set when dirtying the viewport
-    float propertyCameraDistance;
 
     // These scaling factors range from 0 to 1, to scale the light position
     // within the bound of (screenwidth, screenheight, max(screenwidth, screenheight));
diff --git a/libs/hwui/DisplayList.cpp b/libs/hwui/DisplayList.cpp
index 0c544b8..5c5a0425 100644
--- a/libs/hwui/DisplayList.cpp
+++ b/libs/hwui/DisplayList.cpp
@@ -160,8 +160,8 @@
                     mPivotY = mPrevHeight / 2.0f;
                 }
             }
-            const bool perspectiveEnabled = Caches::getInstance().propertyEnable3d;
-            if (!perspectiveEnabled && (mMatrixFlags & ROTATION_3D) == 0) {
+
+            if ((mMatrixFlags & ROTATION_3D) == 0) {
                 mTransformMatrix->loadTranslate(
                         mPivotX + mTranslationX,
                         mPivotY + mTranslationY,
@@ -170,38 +170,25 @@
                 mTransformMatrix->scale(mScaleX, mScaleY, 1);
                 mTransformMatrix->translate(-mPivotX, -mPivotY);
             } else {
-                if (perspectiveEnabled) {
-                    mTransformMatrix->loadTranslate(
-                            mPivotX + mTranslationX,
-                            mPivotY + mTranslationY,
-                            mTranslationZ);
-                    mTransformMatrix->rotate(mRotationX, 1, 0, 0);
-                    mTransformMatrix->rotate(mRotationY, 0, 1, 0);
-                    mTransformMatrix->rotate(mRotation, 0, 0, 1);
-                    mTransformMatrix->scale(mScaleX, mScaleY, 1);
-                    mTransformMatrix->translate(-mPivotX, -mPivotY);
-                } else {
-                    /* TODO: support this old transform approach, based on API level */
-                    if (!mTransformCamera) {
-                        mTransformCamera = new Sk3DView();
-                        mTransformMatrix3D = new SkMatrix();
-                    }
-                    SkMatrix transformMatrix;
-                    transformMatrix.reset();
-                    mTransformCamera->save();
-                    transformMatrix.preScale(mScaleX, mScaleY, mPivotX, mPivotY);
-                    mTransformCamera->rotateX(mRotationX);
-                    mTransformCamera->rotateY(mRotationY);
-                    mTransformCamera->rotateZ(-mRotation);
-                    mTransformCamera->getMatrix(mTransformMatrix3D);
-                    mTransformMatrix3D->preTranslate(-mPivotX, -mPivotY);
-                    mTransformMatrix3D->postTranslate(mPivotX + mTranslationX,
-                            mPivotY + mTranslationY);
-                    transformMatrix.postConcat(*mTransformMatrix3D);
-                    mTransformCamera->restore();
-
-                    mTransformMatrix->load(transformMatrix);
+                if (!mTransformCamera) {
+                    mTransformCamera = new Sk3DView();
+                    mTransformMatrix3D = new SkMatrix();
                 }
+                SkMatrix transformMatrix;
+                transformMatrix.reset();
+                mTransformCamera->save();
+                transformMatrix.preScale(mScaleX, mScaleY, mPivotX, mPivotY);
+                mTransformCamera->rotateX(mRotationX);
+                mTransformCamera->rotateY(mRotationY);
+                mTransformCamera->rotateZ(-mRotation);
+                mTransformCamera->getMatrix(mTransformMatrix3D);
+                mTransformMatrix3D->preTranslate(-mPivotX, -mPivotY);
+                mTransformMatrix3D->postTranslate(mPivotX + mTranslationX,
+                        mPivotY + mTranslationY);
+                transformMatrix.postConcat(*mTransformMatrix3D);
+                mTransformCamera->restore();
+
+                mTransformMatrix->load(transformMatrix);
             }
         }
         mMatrixDirty = false;
@@ -278,8 +265,7 @@
     }
     if (mMatrixFlags != 0) {
         if (mMatrixFlags == TRANSLATION) {
-            renderer.translate(mTranslationX, mTranslationY,
-                    Caches::getInstance().propertyEnable3d ? mTranslationZ : 0.0f); // TODO: necessary?
+            renderer.translate(mTranslationX, mTranslationY);
         } else {
             renderer.concatMatrix(*mTransformMatrix);
         }
diff --git a/libs/hwui/Matrix.cpp b/libs/hwui/Matrix.cpp
index 4f5cd26..3d6188a 100644
--- a/libs/hwui/Matrix.cpp
+++ b/libs/hwui/Matrix.cpp
@@ -372,84 +372,6 @@
     mType = kTypeUnknown;
 }
 
-// translated from android.opengl.Matrix#frustumM()
-void Matrix4::loadFrustum(float left, float top, float right, float bottom, float near, float far) {
-    float r_width  = 1.0f / (right - left);
-    float r_height = 1.0f / (top - bottom);
-    float r_depth  = 1.0f / (near - far);
-    float x = 2.0f * (near * r_width);
-    float y = 2.0f * (near * r_height);
-    float A = (right + left) * r_width;
-    float B = (top + bottom) * r_height;
-    float C = (far + near) * r_depth;
-    float D = 2.0f * (far * near * r_depth);
-
-    memset(&data, 0, sizeof(data));
-    mType = kTypeUnknown;
-
-    data[kScaleX] = x;
-    data[kScaleY] = y;
-    data[8] = A;
-    data[9] = B;
-    data[kScaleZ] = C;
-    data[kTranslateZ] = D;
-    data[11] = -1.0f;
-}
-
-// translated from android.opengl.Matrix#setLookAtM()
-void Matrix4::loadLookAt(float eyeX, float eyeY, float eyeZ,
-        float centerX, float centerY, float centerZ,
-        float upX, float upY, float upZ) {
-    float fx = centerX - eyeX;
-    float fy = centerY - eyeY;
-    float fz = centerZ - eyeZ;
-
-    // Normalize f
-    float rlf = 1.0f / sqrt(fx*fx + fy*fy + fz*fz);
-    fx *= rlf;
-    fy *= rlf;
-    fz *= rlf;
-
-    // compute s = f x up (x means "cross product")
-    float sx = fy * upZ - fz * upY;
-    float sy = fz * upX - fx * upZ;
-    float sz = fx * upY - fy * upX;
-
-    // and normalize s
-    float rls = 1.0f / sqrt(sx*sx + sy*sy + sz*sz);
-    sx *= rls;
-    sy *= rls;
-    sz *= rls;
-
-    // compute u = s x f
-    float ux = sy * fz - sz * fy;
-    float uy = sz * fx - sx * fz;
-    float uz = sx * fy - sy * fx;
-
-    mType = kTypeUnknown;
-    data[0] = sx;
-    data[1] = ux;
-    data[2] = -fx;
-    data[3] = 0.0f;
-
-    data[4] = sy;
-    data[5] = uy;
-    data[6] = -fy;
-    data[7] = 0.0f;
-
-    data[8] = sz;
-    data[9] = uz;
-    data[10] = -fz;
-    data[11] = 0.0f;
-
-    data[12] = 0.0f;
-    data[13] = 0.0f;
-    data[14] = 0.0f;
-    data[15] = 1.0f;
-
-    translate(-eyeX, -eyeY, -eyeZ);
-}
-
 void Matrix4::loadOrtho(float left, float right, float bottom, float top, float near, float far) {
     loadIdentity();
 
diff --git a/libs/hwui/Matrix.h b/libs/hwui/Matrix.h
index 5cd79b1..8b586f0 100644
--- a/libs/hwui/Matrix.h
+++ b/libs/hwui/Matrix.h
@@ -129,10 +129,6 @@
     void loadRotate(float angle);
     void loadRotate(float angle, float x, float y, float z);
     void loadMultiply(const Matrix4& u, const Matrix4& v);
-    void loadFrustum(float left, float top, float right, float bottom, float near, float far);
-    void loadLookAt(float eyeX, float eyeY, float eyeZ,
-            float centerX, float centerY, float centerZ,
-            float upX, float upY, float upZ);
 
     void loadOrtho(float left, float right, float bottom, float top, float near, float far);
 
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index b620b80..7002e26 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -170,21 +170,7 @@
 }
 
 void OpenGLRenderer::initViewport(int width, int height) {
-    if (mCaches.propertyEnable3d) {
-        // TODO: make view proj app configurable
-        float dist = std::max(width, height) * 1.5;
-        dist *= mCaches.propertyCameraDistance;
-        Matrix4 projection;
-        projection.loadFrustum(-width / 2, -height / 2, width / 2, height / 2, dist, 0);
-        Matrix4 view;
-        view.loadLookAt(0, 0, dist,
-                0, 0, 0,
-                0, 1, 0);
-        mViewProjMatrix.loadMultiply(projection, view);
-        mViewProjMatrix.translate(-width/2, -height/2);
-    } else {
-        mViewProjMatrix.loadOrtho(0, width, height, 0, -1, 1);
-    }
+    mViewProjMatrix.loadOrtho(0, width, height, 0, -1, 1);
 
     initializeViewport(width, height);
 }
@@ -1929,13 +1915,6 @@
 status_t OpenGLRenderer::drawDisplayList(DisplayList* displayList, Rect& dirty,
         int32_t replayFlags) {
     status_t status;
-
-    if (mCaches.propertyDirtyViewport) {
-        // force recalc of view/proj matrices
-        setViewport(getWidth(), getHeight());
-        mCaches.propertyDirtyViewport = false;
-    }
-
     // All the usual checks and setup operations (quickReject, setupDraw, etc.)
     // will be performed by the display list itself
     if (displayList && displayList->isRenderable()) {