diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index d4c4b1f..51efdc2 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -63,6 +63,22 @@
 {
     mCurrentCrop.makeInvalid();
     glGenTextures(1, &mTextureName);
+
+    mFrameLatencyNeeded = false;
+    mFrameLatencyOffset = 0;
+    for (int i = 0; i < 128; i++) {
+        mFrameLatencies[i] = 0;
+    }
+}
+
+void Layer::onLayerDisplayed() {
+    if (mFrameLatencyNeeded) {
+        int64_t now = systemTime(SYSTEM_TIME_MONOTONIC);
+        mFrameLatencies[mFrameLatencyOffset] = now -
+                mSurfaceTexture->getTimestamp();
+        mFrameLatencyOffset = (mFrameLatencyOffset + 1) % 128;
+        mFrameLatencyNeeded = false;
+    }
 }
 
 void Layer::onFirstRef()
@@ -408,6 +424,7 @@
 
         // update the active buffer
         mActiveBuffer = mSurfaceTexture->getCurrentBuffer();
+        mFrameLatencyNeeded = true;
 
         const Rect crop(mSurfaceTexture->getCurrentCrop());
         const uint32_t transform(mSurfaceTexture->getCurrentTransform());
@@ -538,6 +555,18 @@
 
     result.append(buffer);
 
+    const int64_t* l = mFrameLatencies;
+    int o = mFrameLatencyOffset;
+    for (int i = 0; i < 128; i += 8) {
+        snprintf(buffer, SIZE,
+                "      "
+                "% 12lld % 12lld % 12lld % 12lld "
+                "% 12lld % 12lld % 12lld % 12lld\n",
+                l[(o+i+0)%128], l[(o+i+1)%128], l[(o+i+2)%128], l[(o+i+3)%128],
+                l[(o+i+4)%128], l[(o+i+5)%128], l[(o+i+6)%128], l[(o+i+7)%128]);
+        result.append(buffer);
+    }
+
     if (mSurfaceTexture != 0) {
         mSurfaceTexture->dump(result, "            ", buffer, SIZE);
     }
