summaryrefslogtreecommitdiffstats
path: root/services/surfaceflinger/LayerBase.cpp
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2010-10-27 23:46:25 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-10-27 23:46:25 -0700
commitc2dba08cc6c7f1a5dd2d7e6ff741f2e7924fc1b0 (patch)
treec3834ac31988863846cb456708da7c80b16582e3 /services/surfaceflinger/LayerBase.cpp
parent98c4bc637bd0ea3852fafbc33f1cafdcfe4714a1 (diff)
parent7ba6ae3970ec6ebbb1b9d126efff37f523e70792 (diff)
downloadframeworks_native-c2dba08cc6c7f1a5dd2d7e6ff741f2e7924fc1b0.zip
frameworks_native-c2dba08cc6c7f1a5dd2d7e6ff741f2e7924fc1b0.tar.gz
frameworks_native-c2dba08cc6c7f1a5dd2d7e6ff741f2e7924fc1b0.tar.bz2
am 7d452f69: Merge "really fix [3118445] Transform * Transform does not work as expected" into gingerbread
Diffstat (limited to 'services/surfaceflinger/LayerBase.cpp')
-rw-r--r--services/surfaceflinger/LayerBase.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/services/surfaceflinger/LayerBase.cpp b/services/surfaceflinger/LayerBase.cpp
index 069b85a..64eed4b 100644
--- a/services/surfaceflinger/LayerBase.cpp
+++ b/services/surfaceflinger/LayerBase.cpp
@@ -415,6 +415,20 @@ void LayerBase::drawWithOpenGL(const Region& clip, const Texture& texture) const
cb = (texture.NPOTAdjust ? texture.hScale : 1.0f);
}
+ /*
+ * For the buffer transformation, we apply the rotation last.
+ * Since we're transforming the texture-coordinates, we need
+ * to apply the inverse of the buffer transformation:
+ * inverse( FLIP_V -> FLIP_H -> ROT_90 )
+ * <=> inverse( ROT_90 * FLIP_H * FLIP_V )
+ * = inverse(FLIP_V) * inverse(FLIP_H) * inverse(ROT_90)
+ * = FLIP_V * FLIP_H * ROT_270
+ * <=> ROT_270 -> FLIP_H -> FLIP_V
+ *
+ * The rotation is performed first, in the texture coordinate space.
+ *
+ */
+
struct TexCoords {
GLfloat u;
GLfloat v;