Fix display projections when translated.
There are two different translations to apply in the logical
orientation, one before scaling and one after.
So translate, scale, translate then rotate.
Bug: 7139798
Change-Id: I0726991cadb62988390e77503dbbaed54f07bfe3
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 6542acd..da15248 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1976,7 +1976,8 @@
snprintf(buffer, SIZE,
"+ DisplayDevice[%u]\n"
" type=%x, layerStack=%u, (%4dx%4d), orient=%2d (type=%08x), "
- "flips=%u, secure=%d, numLayers=%u, v:[%d,%d,%d,%d], f:[%d,%d,%d,%d]\n",
+ "flips=%u, secure=%d, numLayers=%u, v:[%d,%d,%d,%d], f:[%d,%d,%d,%d], "
+ "transform:[[%0.3f,%0.3f,%0.3f][%0.3f,%0.3f,%0.3f][%0.3f,%0.3f,%0.3f]]\n",
dpy,
hw->getDisplayType(), hw->getLayerStack(),
hw->getWidth(), hw->getHeight(),
@@ -1985,7 +1986,10 @@
hw->getSecureLayerVisible(),
hw->getVisibleLayersSortedByZ().size(),
hw->getViewport().left, hw->getViewport().top, hw->getViewport().right, hw->getViewport().bottom,
- hw->getFrame().left, hw->getFrame().top, hw->getFrame().right, hw->getFrame().bottom);
+ hw->getFrame().left, hw->getFrame().top, hw->getFrame().right, hw->getFrame().bottom,
+ hw->getTransform()[0][0], hw->getTransform()[1][0], hw->getTransform()[2][0],
+ hw->getTransform()[0][1], hw->getTransform()[1][1], hw->getTransform()[2][1],
+ hw->getTransform()[0][2], hw->getTransform()[1][2], hw->getTransform()[2][2]);
result.append(buffer);
}