aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm/gm.h
Commit message (Collapse)AuthorAge
* SkMacros split from SkTypes.hGravatar Hal Canary2018-06-12
| | | | | | | Change-Id: I383719ee181c6925ebf62ffc70e1c0f12ee7cf84 Reviewed-on: https://skia-review.googlesource.com/134326 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
* Allow slides/gms to extend the UIGravatar Mike Reed2018-05-15
| | | | | | | | Bug: skia: Change-Id: Ia5971d827e6e05ab6cc30af3105b3b32ee691a34 Reviewed-on: https://skia-review.googlesource.com/128321 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
* simplify gm matricesGravatar Mike Reed2017-08-08
| | | | | | | | | | | | rm gm that appears to have been there solely for pdf, but we don't use it for that now. Bug: skia: Change-Id: I3cf88db923c2445b7c95dda14da679a594117643 Reviewed-on: https://skia-review.googlesource.com/31760 Reviewed-by: Derek Sollenberger <djsollen@google.com> Reviewed-by: Mike Klein <mtklein@google.com> Commit-Queue: Mike Klein <mtklein@google.com>
* GM: some header cleanupGravatar Mike Klein2017-03-22
| | | | | | | | | | | | | | gm.h includes sk_tool_utils.h but does not use it. The bulk of this CL makes each gm that uses sk_tool_utils include it. sk_tool_utils.h also provided SkRandom and SkTDArray, so a couple GMs add those headers too. Change-Id: Ieb2a7c542f0ca89c3223f744fc11b0ff37af36c1 Reviewed-on: https://skia-review.googlesource.com/10014 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Herb Derby <herb@google.com>
* move SkTRegister.h into toolsGravatar Mike Reed2017-01-11
| | | | | | | | | BUG=skia: Change-Id: Ie7d4fac3024b361a281f456fec2b3a837e2bfe43 Reviewed-on: https://skia-review.googlesource.com/6881 Commit-Queue: Mike Reed <reed@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
* change SkClipOp to a class enumGravatar Mike Reed2016-12-12
| | | | | | | | | BUG=skia: Change-Id: I25dbe6d6b8666a2a0a7be7bdd2ae0b067868d14e Reviewed-on: https://skia-review.googlesource.com/5718 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
* Add GM/slide to simulate Android-style reveal clipGravatar robertphillips2016-09-08
| | | | | | | | | Hopefully, this will let us play w/ geometric and shader-based solutions. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2316593003 Committed: https://skia.googlesource.com/skia/+/ffac5c4aae18fc706e4077763c190a89c8507fb0 Review-Url: https://codereview.chromium.org/2316593003
* Revert of Disable tail calls inside Simple GM functions. (patchset #1 id:1 ↵Gravatar mtklein2016-06-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of https://codereview.chromium.org/2050473006/ ) Reason for revert: Appears to have broken Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug Original issue's description: > Disable tail calls inside Simple GM functions. > > I haven't found any way to turn off the particular optimization (-foptimize-sibling-calls) > per-function, but I can control optimization settings coarsely: > > - on GCC, we can pick a particular -O level, so I've picked -O1 which does not > enable -foptimize-sibling-calls > - on Clang, we can only disable all optimization for a function > - have no idea about MSVC > > This should make sure the simple GM functions, e.g. all_bitmap_configs_GM(), > show up on stack traces when we crash. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2050473006 > > Committed: https://skia.googlesource.com/skia/+/eee3ced68f787aadc47fa274ca8e13b354ec920a TBR=reed@google.com,mtklein@chromium.org BUG=skia: CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86-Debug-Trybot Review-Url: https://codereview.chromium.org/2051193002
* Disable tail calls inside Simple GM functions.Gravatar mtklein2016-06-09
| | | | | | | | | | | | | | | | | | I haven't found any way to turn off the particular optimization (-foptimize-sibling-calls) per-function, but I can control optimization settings coarsely: - on GCC, we can pick a particular -O level, so I've picked -O1 which does not enable -foptimize-sibling-calls - on Clang, we can only disable all optimization for a function - have no idea about MSVC This should make sure the simple GM functions, e.g. all_bitmap_configs_GM(), show up on stack traces when we crash. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2050473006 Review-Url: https://codereview.chromium.org/2050473006
* GM: replace boilerplate with macrosGravatar halcanary2015-09-09
| | | | | | | | | | | I have verified locally that nothing draws differently. Motivation: * SK_SIMPLE_GM makes it easier to write a GM. * Reducing 1100 lines of code makes maintenance easier. * Simple GMs are easy to convert to Fiddles. Review URL: https://codereview.chromium.org/1333553002
* Style Change: SkNEW->new; SkDELETE->deleteGravatar halcanary2015-08-26
| | | | | | DOCS_PREVIEW= https://skia.org/?cl=1316123003 Review URL: https://codereview.chromium.org/1316123003
* Add caps overrides to GMsGravatar bsalomon2015-05-27
| | | | Review URL: https://codereview.chromium.org/1158963002
* C++11 override should now be supported by all of {bots,Chrome,Android,Mozilla}Gravatar mtklein2015-03-25
| | | | | | | | | NOPRESUBMIT=true BUG=skia: DOCS_PREVIEW= https://skia.org/?cl=1037793002 Review URL: https://codereview.chromium.org/1037793002
* add SkAnimTimer, SPACE = pause/resume, ESP = stopGravatar reed2015-02-02
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/894083003
* allow GMs to animateGravatar reed2015-02-01
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/888283002
* Remove extraneous newline.Gravatar Brian Salomon2015-01-31
| | | | | | TBR=mtklein@google.com Review URL: https://codereview.chromium.org/878333004
* Add standard way to indicate GM is GPU-only.Gravatar bsalomon2015-01-31
| | | | | | TBR=egdaniel@google.com,mtklein@google.com Review URL: https://codereview.chromium.org/869393007
* Revert of DM::SKPSrc::size() reports correct size. (patchset #3 id:40001 of ↵Gravatar mtklein2015-01-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/863243005/) Reason for revert: Still no good on Chrome OS bot: http://build.chromium.org/p/client.skia/builders/Test-ChromeOS-Alex-GMA3150-x86-Release/builds/628/steps/dm/logs/stdio Original issue's description: > DM::SKPSrc::size() reports correct size. > > Also, DM::GPUSink and DM::RasterSink crop DM::Src::size() to 2048x2048. > > Motivation: > Improve PDF testing by printing the entire SKP. > > Source: http://crrev.com/863243004 > > BUG=skia:3365 > > Committed: https://skia.googlesource.com/skia/+/441b10eac09a1f44983e35da827a6b438a409e63 > > CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu12-ShuttleA-GTX660-x86-Release-Trybot,Test-ChromeOS-Alex-GMA3150-x86-Release-Trybot > > Committed: https://skia.googlesource.com/skia/+/d4dd58e43ca4551531ad6a9f54bfc5632ea45a80 TBR=halcanary@google.com,mtklein@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia:3365 Review URL: https://codereview.chromium.org/886543005
* DM::SKPSrc::size() reports correct size.Gravatar mtklein2015-01-28
| | | | | | | | | | | | | | | | | Also, DM::GPUSink and DM::RasterSink crop DM::Src::size() to 2048x2048. Motivation: Improve PDF testing by printing the entire SKP. Source: http://crrev.com/863243004 BUG=skia:3365 Committed: https://skia.googlesource.com/skia/+/441b10eac09a1f44983e35da827a6b438a409e63 CQ_EXTRA_TRYBOTS=client.skia:Test-Ubuntu12-ShuttleA-GTX660-x86-Release-Trybot Review URL: https://codereview.chromium.org/863243005
* remove unused GM flagsGravatar mtklein2015-01-23
| | | | | | | | | | Depends on https://codereview.chromium.org/873753002/ Thumbs up to CLion for refactoring this for me. BUG=skia: Review URL: https://codereview.chromium.org/867963004
* Spin off GM::runAsBench() from flags.Gravatar mtklein2015-01-23
| | | | | | | | This will let us kill flags. BUG=skia: Review URL: https://codereview.chromium.org/873753002
* SIMPLE_GM generates less codeGravatar halcanary2015-01-12
| | | | Review URL: https://codereview.chromium.org/811703005
* Fix up all the easy virtual ... SK_OVERRIDE cases.Gravatar mtklein2015-01-09
| | | | | | | | | | | | This fixes every case where virtual and SK_OVERRIDE were on the same line, which should be the bulk of cases. We'll have to manually clean up the rest over time unless I level up in regexes. for f in (find . -type f); perl -p -i -e 's/virtual (.*)SK_OVERRIDE/\1SK_OVERRIDE/g' $f; end BUG=skia: Review URL: https://codereview.chromium.org/806653007
* add gm: colorwheelGravatar halcanary2014-10-26
| | | | | | BUG=skia:3061 Review URL: https://codereview.chromium.org/680533002
* Merge Replay and Quilt tasks, adding in all BBH implementations.Gravatar mtklein2014-07-09
| | | | | | | | | | | | | | | | | | | | | | | | Replay isn't that helpful of a test any more now that we have the more stringent Quilt tests. Quilt was missing bounding box hierarchies, though, while Replay was sort of testing RTree (pointlessly, as it was drawing without any clip). Now Quilt does everything, testing RTree, QuadTree, and TileGrid. Quilt mode now falls back to drawing all at once (i.e. Replay) for GMs that don't tile perfectly. Still a TODO to make this check more flexible than exact pixel matches. Two GMs fail when using a BBH: - imageresizetiled - resizeimagefilter We think we're not adjusting the bounds of save layers by their paint. This is probably a bug, but one to be fixed separately from adding new tests. BUG=skia: R=robertphillips@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/377373003
* use platform-independent font for gmGravatar caryclark2014-06-23
| | | | | | | | | | | | | | Create a custom typeface and scaler to render simple paths the same on all platforms. GM tests are modified to explicitly select the custom typeface. R=reed@google.com, mtklein@google.com, bungeman@google.com TBR=reed Author: caryclark@google.com Review URL: https://codereview.chromium.org/348323003
* Refactor how we handle resources path in Tests.Gravatar tfarina2014-06-18
| | | | | | | | | | | | | This idea emerged while doing https://codereview.chromium.org/321723002/ (commit 880914c35c8f7fc2e9c57134134c883baf66e538). BUG=None TEST=make tests && out/Debug/tests R=mtklein@google.com Author: tfarina@chromium.org Review URL: https://codereview.chromium.org/346453002
* Cleanup: Get rid of make_isize() function from gm.h.Gravatar tfarina2014-06-09
| | | | | | | | | | | | | | | This helper function is not necessary. The same thing can be achieved by using SkISize::Make() provided by SkTSize API. BUG=skia:2645 TEST=make dm && out/Debug/dm R=robertphillips@google.com, reed@google.com Author: tfarina@chromium.org Review URL: https://codereview.chromium.org/326523002
* Reland "Clean up Test's resourcePath code."Gravatar tfarina2014-06-09
| | | | | | | | | | | | | This relands commit 91359bed48bc006a4319da86eb26db3b2e6d4afb (Clean up Test's resourcePath code." BUG=None TEST=make dm && out/Debug/dm R=mtklein@google.com Author: tfarina@chromium.org Review URL: https://codereview.chromium.org/321723002
* Revert of Clean up Test's resourcePath code. ↵Gravatar mtklein2014-06-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/319473003/) Reason for revert: Some benchmarks are written in a way that makes this change unsafe (e.g. const char* resPath = GetResourcePath().c_str(); in SkipZeroesBench) and Valgrind and ASAN caught that. We can try again after a more careful cleanup of GetResourcePath(). Original issue's description: > Clean up resourcePath code. > > 1) Make the implementation of SetResourcePath/GetResourcePath of GM and SkBenchmark match with the one in Test. > 2) Make gResourcePath a static pointer to const char and move it inside the classes. > > BUG=None > TEST=make tests && out/Debug/tests > make gm && out/Debug/gm > make bench && out/Debug/bench > R=mtklein@google.com > > Committed: https://skia.googlesource.com/skia/+/52e4f413ffe2d281f9e90ff2147db08083ffcba7 R=tfarina@chromium.org TBR=tfarina@chromium.org NOTREECHECKS=true NOTRY=true BUG=None Author: mtklein@google.com Review URL: https://codereview.chromium.org/320733002
* Clean up resourcePath code.Gravatar tfarina2014-06-07
| | | | | | | | | | | | | | | | 1) Make the implementation of SetResourcePath/GetResourcePath of GM and SkBenchmark match with the one in Test. 2) Make gResourcePath a static pointer to const char and move it inside the classes. BUG=None TEST=make tests && out/Debug/tests make gm && out/Debug/gm make bench && out/Debug/bench R=mtklein@google.com Author: tfarina@chromium.org Review URL: https://codereview.chromium.org/319473003
* DM: also run benches once.Gravatar commit-bot@chromium.org2014-02-26
| | | | | | | | | | | | | | | | | | Also: - make GrMemoryPoolBenches threadsafe - some tweaks to various DM code - rename GM::shortName() to getName() to match benches and tests On my desktop, (289 GMs, 617 benches) x 4 configs, 227 tests takes 46s in Debug, 14s in Release. (Still minutes faster than running tests && bench && gm.) GPU singlethreading is definitely the limiting factor again; going to reexamine whether that's helpful to thread it again. BUG=skia: R=reed@google.com, bsalomon@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/178473006 git-svn-id: http://skia.googlecode.com/svn/trunk@13603 2bbb7eff-a529-9590-31e7-b0007b416f81
* add peekPixels to SkCanvas and SkSurfaceGravatar commit-bot@chromium.org2014-02-13
| | | | | | | | | | | | | | fix reference to SkBaseDevice, which was only a problem in no-gpu build This reverts commit 4fa44a6bf73891b21917fb90d02beef9143bffa3. R=reed@google.com Author: reed@chromium.org Review URL: https://codereview.chromium.org/163603003 git-svn-id: http://skia.googlecode.com/svn/trunk@13432 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert of add peekPixels to SkCanvas and SkSurface ↵Gravatar commit-bot@chromium.org2014-02-13
| | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/161733002/) Reason for revert: compile issues with gm/xfermodes3 Original issue's description: > add peekPixels to SkCanvas and SkSurface > > clone of https://codereview.chromium.org/159723006/ > > Committed: https://code.google.com/p/skia/source/detail?r=13427 R=jvanverth@google.com NOTREECHECKS=true NOTRY=true Author: reed@chromium.org Review URL: https://codereview.chromium.org/163823002 git-svn-id: http://skia.googlecode.com/svn/trunk@13428 2bbb7eff-a529-9590-31e7-b0007b416f81
* add peekPixels to SkCanvas and SkSurfaceGravatar mike@reedtribe.org2014-02-13
| | | | | | | | clone of https://codereview.chromium.org/159723006/ Review URL: https://codereview.chromium.org/161733002 git-svn-id: http://skia.googlecode.com/svn/trunk@13427 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make GMs aware of what tool they're being run in.Gravatar commit-bot@chromium.org2014-02-07
| | | | | | | | | | | | | Add a saveLayer set of draws to convex_poly_clip and fix GPU bug where polygon clips don't account for the translation between clip and device space. BUG=skia:2051 R=robertphillips@google.com, reed@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/148283017 git-svn-id: http://skia.googlecode.com/svn/trunk@13371 2bbb7eff-a529-9590-31e7-b0007b416f81
* Allow GMs to be used as benchmarks. Make convex_poly_clip opt in.Gravatar commit-bot@chromium.org2014-02-03
| | | | | | | | | | R=reed@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/151843002 git-svn-id: http://skia.googlecode.com/svn/trunk@13279 2bbb7eff-a529-9590-31e7-b0007b416f81
* Implement a benchmark for GrResourceCacheGravatar commit-bot@chromium.org2013-11-21
| | | | | | | | | | | | | | | | | | | | | | | Adds "grresourcecache_add" and "grresourcecache_find" bench tests to test GrResourceCache::add and GrResourceCache::find. The tests work only with GPU backends, since GrResourceCache needs an GrGpu. Modifies bench tests to override SkBenchmark::isSuitableFor(Backend) function that specifies what kind of backend the test is inteded for. This replaces the previous "fIsRendering" flag that would indicate test that did no rendering. Adds SkCanvas::getGrContext() call to get the GrContext that the canvas ends up drawing to. The member function solves a common use-case that is also used in the benchmark added here. R=mtklein@google.com, bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/73643005 git-svn-id: http://skia.googlecode.com/svn/trunk@12334 2bbb7eff-a529-9590-31e7-b0007b416f81
* GM: Allow ignored-tests.txt to list configs as well as tests (and ↵Gravatar epoger@google.com2013-10-07
| | | | | | | | | | | | | | | combinations too) BUG=skia:1657 This will allow us to ignore poppler failures until bug 1657 is resolved (but this CL doesn't actually make that change to ignored-tests.txt yet) R=scroggo@google.com Review URL: https://codereview.chromium.org/26294004 git-svn-id: http://skia.googlecode.com/svn/trunk@11639 2bbb7eff-a529-9590-31e7-b0007b416f81
* gm: add a flag to force perspective usage in all gmsGravatar commit-bot@chromium.org2013-09-26
| | | | | | | | | | | BUG= R=reed@google.com, epoger@google.com, borenet@google.com Author: edisonn@google.com Review URL: https://chromiumcodereview.appspot.com/23587029 git-svn-id: http://skia.googlecode.com/svn/trunk@11487 2bbb7eff-a529-9590-31e7-b0007b416f81
* gm: add --ignoreTests flagGravatar epoger@google.com2013-09-19
| | | | | | | | | BUG=skia:1600 R=scroggo@google.com Review URL: https://codereview.chromium.org/23526065 git-svn-id: http://skia.googlecode.com/svn/trunk@11374 2bbb7eff-a529-9590-31e7-b0007b416f81
* Have GMs read the GrContext via a setter/getter rather than a global.Gravatar mtklein@google.com2013-09-16
| | | | | | | | | | | | | | | | GetGr's current global state makes things rather tricky to run GPU GMs in parallel (DM). This API change will let me feed the right GrContext to the right GM in DM. I'm not planning on changing the status quo in GM-the-tool: the new getters and setters still just return the same global. BUG=skia:1590 R=bsalomon@google.com, robertphillips@google.com Review URL: https://codereview.chromium.org/23567032 git-svn-id: http://skia.googlecode.com/svn/trunk@11306 2bbb7eff-a529-9590-31e7-b0007b416f81
* Rewrite SkTRegistry to take any trivially-copyable type.Gravatar mtklein@google.com2013-09-04
| | | | | | | | | | | | | | Obviously these are all currently function pointers of type T(*)(P) for various T and P. In bench refactoring, I'm trying to register a function pointer of type T(*)(), which can't be done as is (passing P=void doesn't work). This also lets us register things like primitives, which is conceivable useful. BUG= R=reed@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/23453031 git-svn-id: http://skia.googlecode.com/svn/trunk@11082 2bbb7eff-a529-9590-31e7-b0007b416f81
* Split SkDevice into SkBaseDevice and SkBitmapDeviceGravatar robertphillips@google.com2013-08-29
| | | | | | | | https://codereview.chromium.org/22978012/ git-svn-id: http://skia.googlecode.com/svn/trunk@10995 2bbb7eff-a529-9590-31e7-b0007b416f81
* Create new target to hold gpu test code, enable direct testing of GrEffects ↵Gravatar commit-bot@chromium.org2013-08-21
| | | | | | | | | | | | in GM. R=robertphillips@google.com, jvanverth@google.com, egdaniel@google.com Author: bsalomon@google.com Review URL: https://chromiumcodereview.appspot.com/23352003 git-svn-id: http://skia.googlecode.com/svn/trunk@10866 2bbb7eff-a529-9590-31e7-b0007b416f81
* Support multiple PDF rendering backends in the GMGravatar vandebo@chromium.org2013-08-20
| | | | | | | | R=epoger@google.com, vandebo@chromium.org Review URL: https://codereview.chromium.org/21669004 git-svn-id: http://skia.googlecode.com/svn/trunk@10841 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixes for factory GM.Gravatar commit-bot@chromium.org2013-08-16
| | | | | | | | | | | | | | | | | | | Skip cross process pipe playback in gm/factory.cpp. Add a new flag to gm.h to skip only this form of pipe playback. In gmmain.cpp, use a bitmap encoder function for serialization that stores the encoded data if present, and use a bitmap decoder on deserialization. This allows gm/factory to work through serialization. Also respect the new pipe skipping flag. BUG=https://code.google.com/p/skia/issues/detail?id=1231 R=borenet@google.com Author: scroggo@google.com Review URL: https://chromiumcodereview.appspot.com/23192004 git-svn-id: http://skia.googlecode.com/svn/trunk@10786 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add an option to create unpremultiplied bitmaps.Gravatar scroggo@google.com2013-06-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently they cannot be used directly by Skia, but the pixels can be used elsewhere. SkImageDecoder: Add functions to require unpremultiplied output and query the presence of the requirement SkImageDecoder_libpng: SkImageDecoder_libwebp: SkImageDecoder_WIC: Respect the requirement for unpremultiplied output. TODO: Fix SkImageDecoder_CG. SkScaledBitmapSampler: Add procs to skip premultiplication and a boolean parameter to use those procs. ImageDecodingTest: Test unpremultiplied bitmap decoding. SampleUnpremul: Add a sample which allows visually comparing between the unpremultiplied version (copied into a premultiplied bitmap, since drawing unpremultiplied is not currently supported) and a premultiplied version of image files. gm.h: Add a getter for the resource path, so Samples can use it. As of patch set 13, https://codereview.chromium.org/16816016/ and https://codereview.chromium.org/16983004/, which were approved separately. R=reed@google.com Review URL: https://codereview.chromium.org/16410009 git-svn-id: http://skia.googlecode.com/svn/trunk@9612 2bbb7eff-a529-9590-31e7-b0007b416f81
* GM::height() now returns the height, not the width.Gravatar scroggo@google.com2013-04-12
| | | | | | | | | Fortunately, the only current caller has a width and height that match, so this should not change any existing GMs. Review URL: https://codereview.chromium.org/14234022 git-svn-id: http://skia.googlecode.com/svn/trunk@8669 2bbb7eff-a529-9590-31e7-b0007b416f81
* gm: write all messages to stdout/stderr with "GM:" preamble to distinguish ↵Gravatar epoger@google.com2013-03-13
| | | | | | | | from various debug messages coming from elsewhere Review URL: https://codereview.chromium.org/12691009 git-svn-id: http://skia.googlecode.com/svn/trunk@8126 2bbb7eff-a529-9590-31e7-b0007b416f81