diff options
| -rw-r--r-- | libs/hwui/Caches.cpp | 18 | ||||
| -rw-r--r-- | libs/hwui/Caches.h | 3 | ||||
| -rw-r--r-- | libs/hwui/DisplayList.cpp | 56 | ||||
| -rw-r--r-- | libs/hwui/Matrix.cpp | 78 | ||||
| -rw-r--r-- | libs/hwui/Matrix.h | 4 | ||||
| -rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 23 |
6 files changed, 23 insertions, 159 deletions
diff --git a/libs/hwui/Caches.cpp b/libs/hwui/Caches.cpp index f02e59156324..69d33288f671 100644 --- a/libs/hwui/Caches.cpp +++ b/libs/hwui/Caches.cpp @@ -702,9 +702,6 @@ TextureVertex* Caches::getRegionMesh() { /////////////////////////////////////////////////////////////////////////////// void Caches::initTempProperties() { - propertyDirtyViewport = false; - propertyEnable3d = false; - propertyCameraDistance = 1.0f; propertyAmbientShadowStrength = 25; propertySpotShadowStrength = 25; @@ -715,17 +712,7 @@ void Caches::initTempProperties() { 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 @@ void Caches::setTempProperty(const char* name, const char* value) { 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 8c0c508d5571..6f3d8fbebb82 100644 --- a/libs/hwui/Caches.h +++ b/libs/hwui/Caches.h @@ -356,9 +356,6 @@ public: // 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 0c544b85f022..5c5a04259258 100644 --- a/libs/hwui/DisplayList.cpp +++ b/libs/hwui/DisplayList.cpp @@ -160,8 +160,8 @@ void DisplayList::updateMatrix() { 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 @@ void DisplayList::updateMatrix() { 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 @@ void DisplayList::setViewProperties(OpenGLRenderer& renderer, T& handler, } 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 4f5cd26e94be..3d6188a0ddfa 100644 --- a/libs/hwui/Matrix.cpp +++ b/libs/hwui/Matrix.cpp @@ -372,84 +372,6 @@ void Matrix4::loadMultiply(const Matrix4& u, const Matrix4& v) { 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 5cd79b13569b..8b586f04c026 100644 --- a/libs/hwui/Matrix.h +++ b/libs/hwui/Matrix.h @@ -129,10 +129,6 @@ public: 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 b620b80b5987..7002e2674af7 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -170,21 +170,7 @@ void OpenGLRenderer::setViewport(int width, int height) { } 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 @@ void OpenGLRenderer::setupDrawIndexedVertices(GLvoid* vertices) { 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()) { |