aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
Commit message (Collapse)AuthorAge
* remove SK_SUPPORT_LEGACY_ONLOCKPIXELS completelyGravatar reed@google.com2014-02-10
| | | | | | | | BUG=skia: Review URL: https://codereview.chromium.org/158893005 git-svn-id: http://skia.googlecode.com/svn/trunk@13382 2bbb7eff-a529-9590-31e7-b0007b416f81
* Move fLastMoveToIndex from SkPath to SkPathRefGravatar robertphillips@google.com2014-02-10
| | | | | | | | https://codereview.chromium.org/146913002/ git-svn-id: http://skia.googlecode.com/svn/trunk@13379 2bbb7eff-a529-9590-31e7-b0007b416f81
* remove unneeded SK_SUPPORT_LEGACY_CANVAS_CREATECOMPATIBLEDEVICEGravatar reed@google.com2014-02-07
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@13363 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert of Revert "Serialization of SkPictureImageFilter" ↵Gravatar commit-bot@chromium.org2014-02-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/153583007/) Reason for revert: New SKPs with version20 are in Google Storage due to http://108.170.219.160:10117/builders/Housekeeper-Nightly-RecreateSKPs/builds/22 Original issue's description: > Revert "Serialization of SkPictureImageFilter" > > This reverts commit 227321b30106e57942929eb96fa5bc22544f6c9e. > > Revert "Sanitizing source files in Housekeeper-Nightly" > > This reverts commit baf28584b7636c01355f8d8d972e06aa7fb66d77. > > TBR=robertphillips@google.com,sugoi@google.com > > Committed: https://code.google.com/p/skia/source/detail?r=13356 R=robertphillips@google.com, sugoi@google.com, fmalita@google.com, fmalita@chromium.org TBR=fmalita@chromium.org, fmalita@google.com, robertphillips@google.com, sugoi@google.com NOTREECHECKS=true NOTRY=true Author: rmistry@google.com Review URL: https://codereview.chromium.org/143163005 git-svn-id: http://skia.googlecode.com/svn/trunk@13357 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Serialization of SkPictureImageFilter"Gravatar fmalita@google.com2014-02-07
| | | | | | | | | | | | | | This reverts commit 227321b30106e57942929eb96fa5bc22544f6c9e. Revert "Sanitizing source files in Housekeeper-Nightly" This reverts commit baf28584b7636c01355f8d8d972e06aa7fb66d77. TBR=robertphillips@google.com,sugoi@google.com Review URL: https://codereview.chromium.org/153583007 git-svn-id: http://skia.googlecode.com/svn/trunk@13356 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2014-02-07
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@13355 2bbb7eff-a529-9590-31e7-b0007b416f81
* Serialization of SkPictureImageFilterGravatar commit-bot@chromium.org2014-02-07
| | | | | | | | | | | | | | BUG=skia: Committed: http://code.google.com/p/skia/source/detail?r=13347 R=senorblanco@google.com, reed@google.com, mtklein@google.com, sugoi@google.com, senorblanco@chromium.org, robertphillips@google.com, scroggo@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/138063005 git-svn-id: http://skia.googlecode.com/svn/trunk@13354 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert of r13347 (Serialization of SkPictureImageFilter - ↵Gravatar robertphillips@google.com2014-02-06
| | | | | | https://codereview.chromium.org/138063005) due to bump in skp file format git-svn-id: http://skia.googlecode.com/svn/trunk@13348 2bbb7eff-a529-9590-31e7-b0007b416f81
* Serialization of SkPictureImageFilterGravatar commit-bot@chromium.org2014-02-06
| | | | | | | | | | | BUG=skia: R=senorblanco@google.com, reed@google.com, mtklein@google.com, sugoi@google.com, senorblanco@chromium.org, robertphillips@google.com, scroggo@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/138063005 git-svn-id: http://skia.googlecode.com/svn/trunk@13347 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix a problem with scaled filters in tiled SkPicture playback.Gravatar senorblanco@chromium.org2014-02-05
| | | | | | | | | | | | | | | The matrix used during filter application should be up-to-date, so that the filter parameters can be scaled by the CTM (e.g., for hiDPI). However, tiled playback defers setting of the matrix until after the restore() call which draws the filter, which is too late. Moving the setMatrix() ahead of the restore() sequence fixes the problem. TEST=ImageFilterMatrixTest R=junov@chromium.org Review URL: https://codereview.chromium.org/145723007 git-svn-id: http://skia.googlecode.com/svn/trunk@13331 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make SkImageFilter methods const.Gravatar commit-bot@chromium.org2014-02-05
| | | | | | | | | | | | | | SkImageFilter had some non-const methods that could all be made const. This is a first step towards making SkImageFilter immutable. BUG=skia:2097 R=mtklein@google.com, reed@google.com, robertphillips@google.com Author: dominikg@chromium.org Review URL: https://codereview.chromium.org/148883011 git-svn-id: http://skia.googlecode.com/svn/trunk@13330 2bbb7eff-a529-9590-31e7-b0007b416f81
* pass in the real rowBytesGravatar reed@google.com2014-02-05
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@13328 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement correct clipping for image filters.Gravatar senorblanco@chromium.org2014-02-05
| | | | | | | | | | | | | | | | | | | | | | | | | | Image filters in Skia currently clip the size of the the offscreen bitmap used for filtering to the device clip bounds. This means that any pixel-moving filter (e.g., blur) has edge artifacts at the clip boundaries. This is problematic for tiling, where a single SkPicture is played back with a clip set to the tile boundaries. By implementing the onFilterBounds() traversal, and using it in saveLayer() when a filter is present, we can clip the layer to the expanded clip rect. Note that this requires that the traversal be performed in reverse as compared to computeFastBounds(). (It's also done in device space, unlike computeFastBounds()). New test imagefiltersclipped tests pixel-moving filters when clipped by various clip rects. New test imageblurtiled tests tiled (compositor-style) rendering of blurred text. There should be no artifacts at the tile boundaries. BUG=337831 R=reed@google.com Review URL: https://codereview.chromium.org/23011012 git-svn-id: http://skia.googlecode.com/svn/trunk@13323 2bbb7eff-a529-9590-31e7-b0007b416f81
* remove SkCanvas::createCompatibleDevice, and add SkCanvas::newSurfaceGravatar reed@google.com2014-02-05
| | | | | | | | | BUG=skia: R=bsalomon@google.com Review URL: https://codereview.chromium.org/154163002 git-svn-id: http://skia.googlecode.com/svn/trunk@13319 2bbb7eff-a529-9590-31e7-b0007b416f81
* Clean up SkPictureRecord.cppGravatar robertphillips@google.com2014-02-05
| | | | | | | | https://codereview.chromium.org/153983007/ git-svn-id: http://skia.googlecode.com/svn/trunk@13318 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2014-02-05
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@13316 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make SkFontMgr interface const.Gravatar commit-bot@chromium.org2014-02-04
| | | | | | | | | | | | COLLABORATOR=mtklein@chromium.org BUG=skia: R=reed@google.com, bungeman@google.com, mtklein@chromium.org Author: mtklein@google.com Review URL: https://codereview.chromium.org/134643028 git-svn-id: http://skia.googlecode.com/svn/trunk@13314 2bbb7eff-a529-9590-31e7-b0007b416f81
* Compilation fix for r13311 (Update SkPictureRecord to allow some ops to be ↵Gravatar robertphillips@google.com2014-02-04
| | | | | | written separately - https://codereview.chromium.org/153883002/) git-svn-id: http://skia.googlecode.com/svn/trunk@13313 2bbb7eff-a529-9590-31e7-b0007b416f81
* Update SkPictureRecord to allow some ops to be written separatelyGravatar robertphillips@google.com2014-02-04
| | | | | | | | https://codereview.chromium.org/153883002/ git-svn-id: http://skia.googlecode.com/svn/trunk@13311 2bbb7eff-a529-9590-31e7-b0007b416f81
* Added root deletion code to fix valgrind errorGravatar commit-bot@chromium.org2014-02-04
| | | | | | | | | | | BUG=skia: R=robertphillips@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/153893004 git-svn-id: http://skia.googlecode.com/svn/trunk@13308 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix samplefuzz, fix some 32/64bit warningsGravatar reed@google.com2014-02-04
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@13303 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add rect clip to convex_poly_clip GMGravatar commit-bot@chromium.org2014-02-04
| | | | | | | | | | | BUG=skia:2051 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/147793007 git-svn-id: http://skia.googlecode.com/svn/trunk@13300 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2014-02-04
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@13296 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix image filter crop offsets for GPU path.Gravatar senorblanco@chromium.org2014-02-03
| | | | | | | | | | | | | This is the GPU-side version of https://codereview.chromium.org/112803004/. Also factored the crop offset unit test into a function, so we can call it with both CPU & GPU devices. R=bsalomon@google.com Review URL: https://codereview.chromium.org/153113003 git-svn-id: http://skia.googlecode.com/svn/trunk@13292 2bbb7eff-a529-9590-31e7-b0007b416f81
* Initial QuadTree implementationGravatar commit-bot@chromium.org2014-02-03
| | | | | | | | | | | | | | | | | | In an effort to find a faster bounding box hierarchy than the R-Tree, a QuadTree has been implemented here. For now, the QuadTree construction is generally faster than the R-Tree and the queries are a bit slower, so overall, SKP local tests showed QuadTree performance similar to the R-Tree performance. Tests and bench are included in this cl. At this point, I'd like to be able to commit this in order to more easily use the bots to test multiple configurations and a larger number of SKPs. The R-Tree BBH is still used by default so this change shouldn't affect chromium. BUG=skia: R=junov@chromium.org, junov@google.com, senorblanco@google.com, senorblanco@chromium.org, reed@google.com, sugoi@google.com, fmalita@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/131343011 git-svn-id: http://skia.googlecode.com/svn/trunk@13282 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2014-02-01
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@13274 2bbb7eff-a529-9590-31e7-b0007b416f81
* add SkCanvas constructor that explicitly creates no_config with dimensionsGravatar commit-bot@chromium.org2014-01-31
| | | | | | | | | | | BUG=skia: R=scroggo@google.com, halcanary@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/137833016 git-svn-id: http://skia.googlecode.com/svn/trunk@13272 2bbb7eff-a529-9590-31e7-b0007b416f81
* Have peek32 return uint32_t& to make it harder to look at more than 4 bytes.Gravatar commit-bot@chromium.org2014-01-31
| | | | | | | | | | | BUG=skia: R=reed@google.com, robertphillips@google.com Author: mtklein@google.com Review URL: https://codereview.chromium.org/145053003 git-svn-id: http://skia.googlecode.com/svn/trunk@13265 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add shim for SkOrderedReadBuffer.h too.Gravatar commit-bot@chromium.org2014-01-31
| | | | | | | | | | | | | Sorry, I specifically looked for this and failed the first time. BUG=skia: R=robertphillips@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/151093002 git-svn-id: http://skia.googlecode.com/svn/trunk@13259 2bbb7eff-a529-9590-31e7-b0007b416f81
* initial import of Chrome's trace_event into skia frameworkGravatar commit-bot@chromium.org2014-01-31
| | | | | | | | | | | | | | | | | | | | | | | This patch includes a modified version of Chrome's trace_event.h, which provides tracing macros that can easily integrate into the about://tracing framework. Currently the macros link to a default implementation of the (narrow) tracing class SkDefaultEventTracer which does nothing; next step will be to have Chrome subclass the SkEventTracer with a shim that bolts Skia's trace events to its own, allowing Skia's trace events to show up in about://tracing. I've verified that this file builds properly, and when I added a simple scoped TRACE_EVENT0 to SkCanvas::drawRect, along with some debug prints in the NOP implementation of tracing, I saw what I expected printed to the screen. BUG=skia: R=nduca@chromium.org, reed@google.com, mtklein@google.com, bsalomon@google.com Author: humper@google.com Review URL: https://codereview.chromium.org/149563004 git-svn-id: http://skia.googlecode.com/svn/trunk@13256 2bbb7eff-a529-9590-31e7-b0007b416f81
* Set write buffer flags only in SkWriteBuffer and SkFlatController constructors.Gravatar commit-bot@chromium.org2014-01-30
| | | | | | | | | | | | | | | This is a baby step toward refactored (and faster in-process) typeface and flattenable factory encoding and decoding. The sooner SkWriteBuffer knows its flags, the better. Next steps will be to rearrange Sk{Read,Write}Buffer members into disjoint strategies to handle typefaces and flattenable factories: one for in-process, one for cross-process, one when validating. BUG=skia: R=reed@google.com, scroggo@google.com Author: mtklein@google.com Review URL: https://codereview.chromium.org/138803005 git-svn-id: http://skia.googlecode.com/svn/trunk@13253 2bbb7eff-a529-9590-31e7-b0007b416f81
* remove (unnecessary) SkScalarMul and SkScalarMulAdd macros from SkMatrix.cpp.Gravatar commit-bot@chromium.org2014-01-30
| | | | | | | | | | | | | SkScalarMulDiv remains, but it can be removed later (though it is slightly clearer to use it at times). BUG=skia: R=caryclark@google.com, mtklein@google.com, halcanary@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/150493002 git-svn-id: http://skia.googlecode.com/svn/trunk@13252 2bbb7eff-a529-9590-31e7-b0007b416f81
* Refactor read and write buffers.Gravatar commit-bot@chromium.org2014-01-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Eliminates SkFlattenable{Read,Write}Buffer, promoting SkOrdered{Read,Write}Buffer a step each in the hierarchy. What used to be this: SkFlattenableWriteBuffer -> SkOrderedWriteBuffer SkFlattenableReadBuffer -> SkOrderedReadBuffer SkFlattenableReadBuffer -> SkValidatingReadBuffer is now SkWriteBuffer SkReadBuffer -> SkValidatingReadBuffer Benefits: - code is simpler, names are less wordy - the generic SkFlattenableFooBuffer code in SkPaint was incorrect; removed - write buffers are completely devirtualized, important for record speed This refactoring was mostly mechanical. You aren't going to find anything interesting in files with less than 10 lines changed. BUG=skia: R=reed@google.com, scroggo@google.com, djsollen@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/134163010 git-svn-id: http://skia.googlecode.com/svn/trunk@13245 2bbb7eff-a529-9590-31e7-b0007b416f81
* patch from issue 119343003Gravatar commit-bot@chromium.org2014-01-30
| | | | | | | | | | | | | | | compile on 10.6, exclude failing gms Sorry for making another CL; rebasing ToT on the old one ended up with code in a tangled mess; was easier to start over. NOTRY=true R=bsalomon@google.com, epoger@google.com, reed@google.com Author: humper@google.com Review URL: https://codereview.chromium.org/148883005 git-svn-id: http://skia.googlecode.com/svn/trunk@13238 2bbb7eff-a529-9590-31e7-b0007b416f81
* Give correct bounds to SkCanvas's AutoDrawLooper use for filter draws.Gravatar senorblanco@chromium.org2014-01-28
| | | | | | | | | | | In conjuction with https://codereview.chromium.org/137423005/, this allows the canvas to tighten the bounds passed to saveLayer() only the affected region. R=reed@google.com BUG=100703 Review URL: https://codereview.chromium.org/141433017 git-svn-id: http://skia.googlecode.com/svn/trunk@13221 2bbb7eff-a529-9590-31e7-b0007b416f81
* change setAlphaType to not modify the pixelref's genIDGravatar reed@google.com2014-01-28
| | | | | | | | | BUG=skia: R=bsalomon@google.com, halcanary@google.com Review URL: https://codereview.chromium.org/137263009 git-svn-id: http://skia.googlecode.com/svn/trunk@13219 2bbb7eff-a529-9590-31e7-b0007b416f81
* That's confusing. Make it clear we're working with 3 points == 9 scalars.Gravatar commit-bot@chromium.org2014-01-28
| | | | | | | | | | | BUG=skia: R=reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/148383009 git-svn-id: http://skia.googlecode.com/svn/trunk@13216 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert of Fast blurred rectangles on GPU ↵Gravatar commit-bot@chromium.org2014-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/119343003/) Reason for revert: Two problems: 1. broke compile on Build-Mac10.6-* bots 2. broke GM expectations on many bots We'll need to examine the GM impact before re-landing. I can work with you to do this on Tuesday if you like; just IM or email me. Original issue's description: > Perform the same analytic blur calculation on the GPU that we do on the CPU. Results in significant performance gains when using Ganesh to render drop shadows in Chrome. > > BUG= > > Committed: http://code.google.com/p/skia/source/detail?r=13210 R=bsalomon@google.com, reed@google.com, humper@google.com, rmistry@google.com TBR=bsalomon@google.com, humper@google.com, reed@google.com NOTREECHECKS=true NOTRY=true BUG= Author: epoger@google.com Review URL: https://codereview.chromium.org/140853008 git-svn-id: http://skia.googlecode.com/svn/trunk@13213 2bbb7eff-a529-9590-31e7-b0007b416f81
* Perform the same analytic blur calculation on the GPU that we do on the CPU. ↵Gravatar commit-bot@chromium.org2014-01-27
| | | | | | | | | | | | | Results in significant performance gains when using Ganesh to render drop shadows in Chrome. BUG= R=bsalomon@google.com, reed@google.com Author: humper@google.com Review URL: https://codereview.chromium.org/119343003 git-svn-id: http://skia.googlecode.com/svn/trunk@13210 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement a computeFastBounds() traversal for SkImageFilter.Gravatar senorblanco@chromium.org2014-01-27
| | | | | | | | | | | This allows for correct culling of primitives which have image filters applied. R=reed@google.com BUG=skia: Review URL: https://codereview.chromium.org/137423005 git-svn-id: http://skia.googlecode.com/svn/trunk@13207 2bbb7eff-a529-9590-31e7-b0007b416f81
* add optional SkAlphaType parameter to notifyPixelsChangedGravatar commit-bot@chromium.org2014-01-27
| | | | | | | | | | R=scroggo@google.com, halcanary@google.com, robertphillips@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/147213002 git-svn-id: http://skia.googlecode.com/svn/trunk@13192 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix more 64bit warningsGravatar reed@google.com2014-01-27
| | | | | | | | BUG=skia: Review URL: https://codereview.chromium.org/147683003 git-svn-id: http://skia.googlecode.com/svn/trunk@13190 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2014-01-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@13185 2bbb7eff-a529-9590-31e7-b0007b416f81
* add alternative to isRect named asRectGravatar commit-bot@chromium.org2014-01-25
| | | | | | | | | | | | | | This defines yunchao's proposed interface in terms of an existing implementation. BUG=skia: R=reed@google.com, yunchao.he@intel.com Author: caryclark@google.com Review URL: https://codereview.chromium.org/140953003 git-svn-id: http://skia.googlecode.com/svn/trunk@13183 2bbb7eff-a529-9590-31e7-b0007b416f81
* add legacy/helper allocN32Pixels, and convert gm to use itGravatar reed@google.com2014-01-25
| | | | | | | | | | | | This is an intermediate api, but might help us quickly get to a point where no one is creating bitmaps in a 2-step process (setConfig + alloc). BUG=skia: R=halcanary@google.com Review URL: https://codereview.chromium.org/140593005 git-svn-id: http://skia.googlecode.com/svn/trunk@13182 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2014-01-25
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@13181 2bbb7eff-a529-9590-31e7-b0007b416f81
* SkOnce: add option to call another cleanup function once at exit.Gravatar commit-bot@chromium.org2014-01-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | Use this to clean up empty SkData and SkPathRef. Current leaks: Leaked SkRefCntBase: 40 Leaked SkFlattenable: 32 Leaked SkPixelRef: 32 Leaked SkMallocPixelRef: 32 Leaked SkFontConfigInterface: 1 Leaked SkWeakRefCnt: 1 Leaked SkTypeface: 1 Leaked SkFontMgr: 1 Leaked SkDataTable: 3 Leaked SkImage: 1 Leaked ???: 1 Leaked ???: 1 BUG=skia: R=halcanary@google.com, reed@google.com Author: mtklein@google.com Review URL: https://codereview.chromium.org/132803005 git-svn-id: http://skia.googlecode.com/svn/trunk@13180 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix (some) 64bit warnings -- size_t -> intGravatar commit-bot@chromium.org2014-01-24
| | | | | | | | | | | BUG=skia: R=mtklein@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/147053003 git-svn-id: http://skia.googlecode.com/svn/trunk@13178 2bbb7eff-a529-9590-31e7-b0007b416f81
* add installPixelsGravatar reed@google.com2014-01-24
| | | | | | | | | BUG=skia: R=halcanary@google.com Review URL: https://codereview.chromium.org/143073008 git-svn-id: http://skia.googlecode.com/svn/trunk@13174 2bbb7eff-a529-9590-31e7-b0007b416f81
* Resolve a few memory leaks in tests.Gravatar commit-bot@chromium.org2014-01-24
| | | | | | | | | | | | | | | | | Purge the global scaled image cache after use in tests. The cache was right to hold on to the pixels indefinitely, but this change makes it easier to run down actual memory leaks. Add SK_DECLARE_INST_COUNT to several classes. BUG=skia: R=reed@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/145443004 git-svn-id: http://skia.googlecode.com/svn/trunk@13171 2bbb7eff-a529-9590-31e7-b0007b416f81