aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* Change SkResourceCache to take a Visitor inside its find().Gravatar reed2014-09-15
| | | | | | | | | | | | | | This simplifies the API/contract, in that there are not any exposed lock/unlock scopes. patch from issue 572573002 BUG=skia: R=mtklein@google.com, danakj@chromium.org Author: reed@google.com Review URL: https://codereview.chromium.org/567393002
* Revert of Picture Recording: fix the performance bottleneck in ↵Gravatar mtklein2014-09-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SkDeferredCanvas::isFullFrame (patchset #7 id:140001 of https://codereview.chromium.org/545813002/) Reason for revert: This is leaking memory: http://108.170.220.120:10117/builders/Test-Ubuntu13.10-GCE-NoGPU-x86_64-Debug-ASAN/builds/2516/steps/RunDM/logs/stdio Original issue's description: > Picture Recording: fix the performance bottleneck in SkDeferredCanvas::isFullFrame > > blink skips all pending commands during picture recording if it is drawing an opaque full-frame > geometry or image. This may improve performance for some edge cases. To recognize an opaque > full-frame drawing should be cheap enough. Otherwise, the overhead will offset the improvement. > Unfortunately, data from perf for content_shell on Nexus7 shows that SkDeferredCanvas::isFullFrame > is far from cheap. Table below shows that how much isFullFrame() costs in the whole render process. > > benchmark percentage > my local benchmark(draw 1000 sprites) 4.1% > speedReading 2.8% > FishIETank(1000 fishes) 1.5% > GUIMark3 Bitmap 2.0% > > By contrast, real recording (SkGPipeCanvas::drawBitmapRectToRect) and real rasterization > (GrDrawTarget::drawRect) cost ~4% and ~6% in the whole render process respectively. Apparently, > SkDeferredCanvas::isFullFrame() is nontrivial. > > getDeviceSize() is the main contributor to this hotspot. The change simply save the canvasSize and > reuse it among drawings if it is not a fresh frame. This change cut off ~65% (or improved ~2 times) > of isFullFrame(). > > telemetry smoothness canvas_tough_test didn't show obvious improvement or regression. > > BUG=411166 > > Committed: https://skia.googlesource.com/skia/+/8e45c3777d886ba3fe239bb549d06b0693692152 R=junov@chromium.org, tomhudson@google.com, reed@google.com, yunchao.he@intel.com TBR=junov@chromium.org, reed@google.com, tomhudson@google.com, yunchao.he@intel.com NOTREECHECKS=true NOTRY=true BUG=411166 Author: mtklein@google.com Review URL: https://codereview.chromium.org/571053002
* remove 'experimental' from using hash tables in resourcecacheGravatar reed2014-09-14
| | | | | | | | TBR= Author: reed@chromium.org Review URL: https://codereview.chromium.org/567303002
* Picture Recording: fix the performance bottleneck in ↵Gravatar yunchao.he2014-09-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | SkDeferredCanvas::isFullFrame blink skips all pending commands during picture recording if it is drawing an opaque full-frame geometry or image. This may improve performance for some edge cases. To recognize an opaque full-frame drawing should be cheap enough. Otherwise, the overhead will offset the improvement. Unfortunately, data from perf for content_shell on Nexus7 shows that SkDeferredCanvas::isFullFrame is far from cheap. Table below shows that how much isFullFrame() costs in the whole render process. benchmark percentage my local benchmark(draw 1000 sprites) 4.1% speedReading 2.8% FishIETank(1000 fishes) 1.5% GUIMark3 Bitmap 2.0% By contrast, real recording (SkGPipeCanvas::drawBitmapRectToRect) and real rasterization (GrDrawTarget::drawRect) cost ~4% and ~6% in the whole render process respectively. Apparently, SkDeferredCanvas::isFullFrame() is nontrivial. getDeviceSize() is the main contributor to this hotspot. The change simply save the canvasSize and reuse it among drawings if it is not a fresh frame. This change cut off ~65% (or improved ~2 times) of isFullFrame(). telemetry smoothness canvas_tough_test didn't show obvious improvement or regression. BUG=411166 R=junov@chromium.org, tomhudson@google.com, reed@google.com Author: yunchao.he@intel.com Review URL: https://codereview.chromium.org/545813002
* Add support for the Rec601 YUV color space to GrYUVtoRGBEffect.Gravatar rileya2014-09-12
| | | | | | | | R=bsalomon@google.com, senorblanco@chromium.org, sugoi@chromium.org, reed@google.com Author: rileya@chromium.org Review URL: https://codereview.chromium.org/516463005
* Revert of Add a test that uses C++11 features as a compiler canary. ↵Gravatar mtklein2014-09-12
| | | | | | | | | | | | | | | | | | | | | | | | (patchset #2 id:20001 of https://codereview.chromium.org/568913002/) Reason for revert: nope, nacl and ubuntu local bots (at least) broken Original issue's description: > Add a test that uses C++11 features as a compiler canary. > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/86e01df8d1d8848044c3fcc31c1a2008b70fe08c R=bungeman@google.com, mtklein@chromium.org TBR=bungeman@google.com, mtklein@chromium.org NOTREECHECKS=true NOTRY=true BUG=skia: Author: mtklein@google.com Review URL: https://codereview.chromium.org/565213008
* Add a test that uses C++11 features as a compiler canary.Gravatar mtklein2014-09-12
| | | | | | | | | BUG=skia: R=bungeman@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/568913002
* Do not expect a copysign function to be defined in <cmath> with clang-clGravatar ehsan.akhgari2014-09-12
| | | | | | | | | | | | clang-cl defines __cplusplus to 201103L, but it uses the runtime library provided by MSVC, so the copysign function will not be available there. BUG=skia: R=reed@google.com Author: ehsan.akhgari@gmail.com Review URL: https://codereview.chromium.org/526813002
* Handle NULL typeface in SkFontMgr_fontconfig::onMatchFaceStyle.Gravatar bungeman2014-09-12
| | | | | | | | | | SampleApp does this, and it needs to be handled properly. R=mtklein@google.com Author: bungeman@google.com Review URL: https://codereview.chromium.org/563263003
* use SkData::NewUninitializedGravatar reed2014-09-12
| | | | | | | | | BUG=skia: R=bungeman@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/565803005
* Add *@skia.org to AUTHORS so we can land CLs using those addresses if we like.Gravatar mtklein2014-09-12
| | | | | | | | | BUG=skia: R=hcm@google.com, reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/565293002
* Let SkTaskGroup work synchronously if no one created an SkTaskGroup::Enabler.Gravatar mtklein2014-09-12
| | | | | | | | | | | Tested by running DM with its SkTaskGroup::Enabler commented out. Slow, but completed correctly. BUG=skia: R=reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/556223003
* Add more debugging for newly failing assert (DM on Xoom bots).Gravatar Mike Klein2014-09-12
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/568823002
* remove confusing/unused stream methodsGravatar reed2014-09-12
| | | | | | | | | BUG=skia: R=bungeman@google.com, djsollen@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/563273003
* Update SKP version to 99Gravatar borenet2014-09-11
| | | | | | | | | | Automatic commit by the RecreateSKPs bot. TBR= Author: borenet@google.com Review URL: https://codereview.chromium.org/571443002
* Clear away any lingering error before testing SkError.Gravatar mtklein2014-09-11
| | | | | | | | | | | | Looks like something's setting an error before ErrorTest runs on our new Venue8 bots. BUG=skia: R=humper@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/551973004
* Add --matrix to DM, to play around with and maybe use on a bot.Gravatar mtklein2014-09-11
| | | | | | | | | BUG=skia: R=reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/563723005
* add PurgeResourceCache to track leaksGravatar reed2014-09-11
| | | | | | | | TBR=halcananry Author: reed@google.com Review URL: https://codereview.chromium.org/554263005
* Disable discardable memory for the resource cache until tests pass.Gravatar danakj2014-09-11
| | | | | | | | | BUG=skia:2926 R=reed@google.com Author: danakj@chromium.org Review URL: https://codereview.chromium.org/568493002
* Make SkBitmapCache remove invalid bitmaps from the SkResourceCache.Gravatar danakj2014-09-11
| | | | | | | | | | | | | | | | | | | | | | This adds SkResourceCache::Remove() which will remove a resource from its cache. The resource is required to be unlocked at the time Remove() is called. Then SkBitmapCache::Find() makes use of this to Remove() bitmaps from the cache whose pixels have been evicted. This allows the bitmap to be re-added to the cache with pixels again. After this change, background a tab (and discarding all the bitmaps' contents) no longer disables image caching for those discarded images once the tab is visible again. BUG=skia:2926 NOTRY=true R=reed@android.com, tomhudson@google.com, reed@google.com Author: danakj@chromium.org Review URL: https://codereview.chromium.org/561953002
* SkData can allocate room for its contents in the same blockGravatar reed2014-09-11
| | | | | | | | | BUG=skia: R=bungeman@google.com, mtklein@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/560653004
* Assert SkTDArray::pop() doesn't underflow.Gravatar mtklein2014-09-11
| | | | | | | | | BUG=skia: R=reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/563633003
* Update SKP version to 98Gravatar borenet2014-09-10
| | | | | | | | | | Automatic commit by the RecreateSKPs bot. TBR= Author: borenet@google.com Review URL: https://codereview.chromium.org/559283002
* Delay any SkRecordOptimize until after SkRecord has stuck.Gravatar mtklein2014-09-10
| | | | | | | | | BUG=skia: R=robertphillips@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/561993002
* Fix a bug in Save-Restore no-op optimization.Gravatar mtklein2014-09-10
| | | | | | | | | | | | | | | | | | | | | | | We optimize Save SaveLayer Restore Restore into NoOp NoOp NoOp Restore I'm considering skipping the call to SkRecordOptimize again just to eliminate this extra variable from landing SkRecord. Thoughts? BUG=skia: R=robertphillips@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/560163002
* Remove a layer of indirection and code from SkFontHost.Gravatar bungeman2014-09-10
| | | | | | | | R=mtklein@google.com, tomhudson@google.com, djsollen@google.com Author: bungeman@google.com Review URL: https://codereview.chromium.org/105223006
* Revert of Added test for non cached ETC1 (patchset #2 id:20001 of ↵Gravatar bungeman2014-09-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/564493002/) Reason for revert: This is causing dm and gm to crash on the Win8 7770 bots, for example http://108.170.220.120:10117/builders/Test-Win8-ShuttleA-HD7770-x86-Debug/builds/2128 An example stack trace looks like [13:46:16.260000] -1M drawing... extractbitmap [600 600] [13:46:16.760000] -1M drawing... etc1bitmap_npot [124 124] [13:46:16.760000] -1M drawing... etc1bitmap_r11.ktx [128 128] [13:46:16.760000] -1M drawing... etc1bitmap_ktx [128 128] [13:46:16.760000] -1M drawing... etc1bitmap_pkm_volatile [128 128] [13:46:16.760000] [13:46:16.760000] Caught exception 3221225477 EXCEPTION_ACCESS_VIOLATION [13:46:16.760000] sk_gr_allocate_texture +c9 [13:46:16.760000] load_etc1_texture +1dd [13:46:16.760000] sk_gr_create_bitmap_texture +199 [13:46:16.760000] GrLockAndRefCachedBitmapTexture +ad [13:46:16.760000] SkGpuDevice::SkAutoCachedTexture::set +5d [13:46:16.760000] SkGpuDevice::SkAutoCachedTexture::SkAutoCachedTexture +65 [13:46:16.760000] SkGpuDevice::internalDrawBitmap +8e [13:46:16.760000] SkGpuDevice::drawBitmapCommon +608 [13:46:16.760000] SkGpuDevice::drawBitmap +79 [13:46:16.760000] SkCanvas::internalDrawBitmap +11b [13:46:16.760000] SkCanvas::drawBitmap +d3 [13:46:16.760000] skiagm::ETC1BitmapGM::onDraw +140 [13:46:16.760000] skiagm::GM::drawContent +3c [13:46:16.760000] skiagm::GM::draw +24 [13:46:16.760000] GMMain::invokeGM +63 [13:46:16.760000] GMMain::generate_image +186 [13:46:16.760000] GMMain::test_drawing +5b [13:46:16.760000] run_multiple_configs +2f9 [13:46:16.760000] tool_main +75d [13:46:16.760000] main +16 [13:46:16.760000] __tmainCRTStartup +199 [13:46:16.760000] mainCRTStartup +d [13:46:16.760000] BaseThreadInitThunk +e [13:46:16.760000] RtlInitializeExceptionChain +84 [13:46:16.760000] RtlInitializeExceptionChain +5a Original issue's description: > Added test for non cached ETC1 > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/d9ec549071581d9d1dc2e5fac3163305ae935a39 R=bsalomon@chromium.org, robertphillips@chromium.org, robertphillips@google.com, sugoi@chromium.org TBR=bsalomon@chromium.org, robertphillips@chromium.org, robertphillips@google.com, sugoi@chromium.org NOTREECHECKS=true NOTRY=true BUG=skia: Author: bungeman@google.com Review URL: https://codereview.chromium.org/559093003
* Fixed void* to uint64_t cast on win64 in TraceID.Gravatar cjacek2014-09-10
| | | | | | | | | | | | On win64, long is 32-bit. Found by GCC (mingw-w64) build, where this causes an error. This is the Skia version of https://codereview.chromium.org/374043002 . R=bungeman@google.com, humper@google.com Author: cjacek@gmail.com Review URL: https://codereview.chromium.org/510923002
* Added test for non cached ETC1Gravatar sugoi2014-09-10
| | | | | | | | | BUG=skia: R=bsalomon@chromium.org, robertphillips@chromium.org, robertphillips@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/564493002
* Measure picture recording speed in nanobench.Gravatar mtklein2014-09-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Today we measure SkPicture playback speed, but not the time it takes to record the SkPicture. This fixes that by reading SKPs from disk and re-recording them. On the console, recording shows up first as the nonrendering skp benches, followed later by the usual playback benches: maxrss loops min median mean max stddev samples config bench 51M 2 165µs 168µs 169µs 178µs 3% ▆▄▃█▂▄▁▂▁▁ nonrendering tabl_slashdot.skp 57M 1 9.72ms 9.77ms 9.79ms 9.97ms 1% █▂▂▅▃▂▁▄▂▁ nonrendering desk_pokemonwiki.skp 57M 32 2.92µs 2.96µs 3.03µs 3.46µs 6% ▅▁▁▁▁▁▁█▂▁ nonrendering desk_yahoosports.skp ... 147M 1 3.86ms 3.87ms 3.97ms 4.81ms 7% █▁▁▁▁▁▁▁▁▁ 8888 tabl_slashdot.skp_1 147M 1 4.54ms 4.56ms 4.55ms 4.56ms 0% █▅▇▅█▅▂▁▅▁ 565 tabl_slashdot.skp_1 147M 2 3.08ms 3.24ms 4.17ms 8.18ms 50% █▁▁█▁▁▁▁▁▁ gpu tabl_slashdot.skp_1 147M 1 1.61ms 1.62ms 1.69ms 2.33ms 13% █▁▁▁▁▁▁▁▁▁ 8888 desk_pokemonwiki.skp_1 147M 1 1.44ms 1.44ms 1.45ms 1.47ms 1% ▅▂█▂▂▅▁▁▂▁ 565 desk_pokemonwiki.skp_1 ... On skiaperf.com, they'll also be separated out from playback benches by bench_type. BUG=skia: R=reed@google.com, mtklein@google.com, jcgregorio@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/559153002
* Clean up old custom tools now subsumed by nanobench.Gravatar mtklein2014-09-10
| | | | | | | | | BUG=skia: R=mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/551263003
* Distinguish common and unique names for skiaperf.com.Gravatar mtklein2014-09-10
| | | | | | | | | | | | Turns out we tack on the size post-facto in ResultsWriter::bench(), so the only place we need getUniqueName() to differ from getName() is SKPBench. BUG=skia: R=jcgregorio@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/552303004
* Fix iteration bounds of Android GL API initializationGravatar tomhudson2014-09-10
| | | | | | | | | | | | | A dormant error in https://codereview.chromium.org/319043005 was exposed on some new platforms; this makes sure loop iterations are bounded. BUG= R=joshualitt@google.com, joshualitt@chromium.org Author: tomhudson@google.com Review URL: https://codereview.chromium.org/557363002
* make set3DMask virtual, so we can safely notify the shadercontextGravatar reed2014-09-10
| | | | | | | | | | | also boost preallocated storage to account for this combo of bitmapshader + emboss + colorfilter BUG=skia: R=djsollen@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/563563002
* Expectation file update for bot changes.Gravatar Mike Klein2014-09-10
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/560873002
* Detect presence of dwrite_1.h.Gravatar bungeman2014-09-10
| | | | | | | | | | | | | | | | | | This introduces the SK_HAS_DWRITE_1_H define which may be set at build time or will be true when WINVER_MAXVER >= 0x0602 . The dwrite_1.h header is available starting in Windows SDK 8.0. This change supports users who must still use Windows SDK 7.0. It also allows for easier local testing of the older interfaces on newer versions of Windows. See also: https://bugzilla.mozilla.org/show_bug.cgi?id=1053652 R=george@mozilla.com, mtklein@google.com Author: bungeman@google.com Review URL: https://codereview.chromium.org/552383002
* disable conservative rasterclip on gpu, until we understand perspectiveGravatar reed2014-09-10
| | | | | | | | | BUG=skia: R=bsalomon@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/561763002
* Update SKP version to 97Gravatar borenet2014-09-09
| | | | | | | | | | Automatic commit by the RecreateSKPs bot. TBR= Author: borenet@google.com Review URL: https://codereview.chromium.org/560743002
* Fix format of nanobench resultGravatar qiankun.miao2014-09-09
| | | | | | | | | | | | | Column of samples is too wide. This makes config is not align with the 'config' title. Pad 'samples' tilte with some whitespaces to fix this issue. BUG=skia: R=mtklein@google.com Author: qiankun.miao@intel.com Review URL: https://codereview.chromium.org/549153005
* correct prev suppressionGravatar reed2014-09-09
| | | | | | | | | TBR= NOTRY=True Author: reed@chromium.org Review URL: https://codereview.chromium.org/543903005
* suppress multipicturedraw_pathclip_tiled_nvprmsaa4 after the ↵Gravatar reed2014-09-09
| | | | | | | | | | | conservative-rasterclip cl TBR= NOTRY=True Author: reed@chromium.org Review URL: https://codereview.chromium.org/555403002
* Revert of Revert of allow canvas to force conservative clips (for speed) ↵Gravatar reed2014-09-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (patchset #1 id:1 of https://codereview.chromium.org/554033003/) Reason for revert: May just rebaseline, plus want to see the results of the chrome tests, so re-trying this CL. Original issue's description: > Revert of allow canvas to force conservative clips (for speed) (patchset #7 id:120001 of https://codereview.chromium.org/541593005/) > > Reason for revert: > multipicturedraw failed on nvprmsaa -- don't know why yet > > Original issue's description: > > Allow SkCanvas to be initialized to force conservative rasterclips. This has the following effects: > > > > 1. Queries to the current clip will be conservatively large. This can mean the quickReject may return false more often. > > > > 2. The conservative clips mean less work is done. > > > > 3. Enabled by default for Gpu, Record, and NoSaveLayer canvases. > > > > 4. API is private for now. > > > > Committed: https://skia.googlesource.com/skia/+/27a5e656c3d6ef22f9cb34de18e1b960da3aa241 > > TBR=robertphillips@google.com,bsalomon@google.com,mtklein@google.com,junov@google.com > NOTREECHECKS=true > NOTRY=true > > Committed: https://skia.googlesource.com/skia/+/6f09709519b79a1159f3826645f1c5fbc101ee11 R=robertphillips@google.com, bsalomon@google.com, mtklein@google.com, junov@google.com, reed@google.com TBR=bsalomon@google.com, junov@google.com, mtklein@google.com, reed@google.com, robertphillips@google.com NOTREECHECKS=true NOTRY=true Author: reed@chromium.org Review URL: https://codereview.chromium.org/560713002
* Rebaselines for 6bc2c94de33 (fontmgr_iter).Gravatar bungeman2014-09-09
| | | | Rebaselines for "Add font fallback support to SkFontMgr_fontconfig."
* disable webtry seccmp on non-linux buildGravatar humper2014-09-09
| | | | | | | | | BUG=skia: R=jcgregorio@google.com Author: humper@google.com Review URL: https://codereview.chromium.org/555993002
* simple build script for webtry that re-generates the code templateGravatar humper2014-09-09
| | | | | | | | | | | before compilation BUG=skia: R=jcgregorio@google.com Author: humper@google.com Review URL: https://codereview.chromium.org/552343003
* rebase a couple oddballsGravatar Mike Klein2014-09-09
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/555193004
* Rebase intel rhb gpu GMs.Gravatar Mike Klein2014-09-09
| | | | | | | | | Looks like I accidentally re-enabled GPU mode in GM for Intel RHB. Rebaseline it so it's green today before we turn it off tomorrow. BUG=skia: Review URL: https://codereview.chromium.org/552413002
* Revert of allow canvas to force conservative clips (for speed) (patchset #7 ↵Gravatar reed2014-09-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:120001 of https://codereview.chromium.org/541593005/) Reason for revert: multipicturedraw failed on nvprmsaa -- don't know why yet Original issue's description: > Allow SkCanvas to be initialized to force conservative rasterclips. This has the following effects: > > 1. Queries to the current clip will be conservatively large. This can mean the quickReject may return false more often. > > 2. The conservative clips mean less work is done. > > 3. Enabled by default for Gpu, Record, and NoSaveLayer canvases. > > 4. API is private for now. > > Committed: https://skia.googlesource.com/skia/+/27a5e656c3d6ef22f9cb34de18e1b960da3aa241 R=robertphillips@google.com, bsalomon@google.com, mtklein@google.com, junov@google.com TBR=bsalomon@google.com, junov@google.com, mtklein@google.com, robertphillips@google.com NOTREECHECKS=true NOTRY=true Author: reed@google.com Review URL: https://codereview.chromium.org/554033003
* Add font fallback support to SkFontMgr_fontconfig.Gravatar bungeman2014-09-09
| | | | | | | | R=mtklein@google.com, djsollen@google.com Author: bungeman@google.com Review URL: https://codereview.chromium.org/489733005
* When parsing arguments on Windows, check malloc() for failure.Gravatar senorblanco2014-09-09
| | | | | | | | | | | | Note: this code is only executed by Skia utilities AFAIK, not by external clients. BUG=skia:2642 R=reed@google.com Author: senorblanco@chromium.org Review URL: https://codereview.chromium.org/548343002