diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 3805ca6..7dbec17 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -432,6 +432,8 @@
     fRepeatDrawing = false;
     fAnimating = false;
     fRotate = false;
+    fPerspAnim = false;
+    fPerspAnimTime = 0;
     fScale = false;
     fRequestGrabImage = false;
     fUsePipe = false;
@@ -615,8 +617,14 @@
         return;
     }
     // update the animation time
-    gAnimTimePrev = gAnimTime;
-    gAnimTime = SkTime::GetMSecs();
+    if (!gAnimTimePrev && !gAnimTime) {
+        // first time make delta be 0
+        gAnimTime = SkTime::GetMSecs();
+        gAnimTimePrev = gAnimTime;
+    } else {
+        gAnimTimePrev = gAnimTime;
+        gAnimTime = SkTime::GetMSecs();
+    }
 
     SkScalar cx = fZoomCenterX;
     SkScalar cy = fZoomCenterY;
@@ -1023,6 +1031,22 @@
         canvas->rotate(SkIntToScalar(30));
         canvas->translate(-cx, -cy);
     }
+    if (fPerspAnim) {
+        fPerspAnimTime += SampleCode::GetAnimSecondsDelta();
+
+        static const SkScalar gAnimPeriod = 10 * SK_Scalar1;
+        static const SkScalar gAnimMag = SK_Scalar1 / 1000;
+        SkScalar t = SkScalarMod(fPerspAnimTime, gAnimPeriod);
+        if (SkScalarFloorToInt(SkScalarDiv(fPerspAnimTime, gAnimPeriod)) & 0x1) {
+            t = gAnimPeriod - t;
+        }
+        t = 2 * t - gAnimPeriod;
+        t = SkScalarMul(SkScalarDiv(t, gAnimPeriod), gAnimMag);
+        SkMatrix m;
+        m.reset();
+        m.setPerspY(t);
+        canvas->concat(m);
+    }
 
     canvas->setDrawFilter(new FlagsDrawFilter(fLCDState, fAAState,
                                        fFilterState, fHintingState))->unref();
@@ -1035,6 +1059,9 @@
     } else {
         (void)SampleView::SetRepeatDraw(child, 1);
     }
+    if (fPerspAnim) {
+        this->inval(NULL);
+    }
     //(void)SampleView::SetUsePipe(child, fUsePipe);
 }
 
@@ -1302,6 +1329,11 @@
             this->inval(NULL);
             this->updateTitle();
             return true;
+        case 'k':
+            fPerspAnim = !fPerspAnim;
+            this->inval(NULL);
+            this->updateTitle();
+            return true;
         case 's':
             fScale = !fScale;
             this->inval(NULL);
@@ -1555,6 +1587,9 @@
     if (fNClip) {
         title.prepend("<C> ");
     }
+    if (fPerspAnim) {
+        title.prepend("<K> ");
+    }
 
     title.prepend(trystate_str(fLCDState, "LCD ", "lcd "));
     title.prepend(trystate_str(fAAState, "AA ", "aa "));
