commit | cbdf007bc2eb85056a1a5c75c088202becba2d16 | [log] [tgz] |
---|---|---|
author | mtklein <mtklein@chromium.org> | Fri Aug 19 09:05:27 2016 -0700 |
committer | Commit bot <commit-bot@chromium.org> | Fri Aug 19 09:05:27 2016 -0700 |
tree | e5ad582ba81b2c6b113195f64ab584c8376567a1 | |
parent | 68d952cf4061dc455d6a6040ce1e4625e4f2ab29 [diff] [blame] |
Fast path translate() in SkCanvas and SkLiteDL. This adds didTranslate() so that SkLiteDL (and other canvas recorders) can record the translate rather than the full concat. It also adds a case to SkMatrix::preTranslate() to fast path translate x translate -> translate (i.e. +=). BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2255283002 Committed: https://skia.googlesource.com/skia/+/5fa47f4fd13b3158de4599414c86d17649c2dd1c Misc bots failing in pictureimagefilter replay modes. https://luci-milo.appspot.com/swarming/task/30b8e53f3a1f4f10/steps/dm/0/stdout Problem is FMA vs. not. CQ_INCLUDE_TRYBOTS=master.client.skia: Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Fast-Trybot Review-Url: https://codereview.chromium.org/2255283002
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index e5ad3b8..e039c60 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp
@@ -1444,9 +1444,14 @@ ///////////////////////////////////////////////////////////////////////////// void SkCanvas::translate(SkScalar dx, SkScalar dy) { - SkMatrix m; - m.setTranslate(dx, dy); - this->concat(m); + this->checkForDeferredSave(); + fDeviceCMDirty = true; + fMCRec->fMatrix.preTranslate(dx,dy); + + // Translate shouldn't affect the is-scale-translateness of the matrix. + SkASSERT(fIsScaleTranslate == fMCRec->fMatrix.isScaleTranslate()); + + this->didTranslate(dx,dy); } void SkCanvas::scale(SkScalar sx, SkScalar sy) {