aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench
Commit message (Collapse)AuthorAge
* cleanup and optimize rect intersect routinesGravatar reed2014-10-09
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/640723004
* Attempt at fixing color cube benchGravatar sugoi2014-10-09
| | | | | | | | The original bench was hitting the cache since it was using the same color filter for all loops. By creating a new color filter within the loop, at least this part of it is solved. I'm not 100% sure this is the right way, but at least the numbers are a bit more reasonable and are affected by the output resolution. BUG=skia: Review URL: https://codereview.chromium.org/648483002
* Use presence of a content key as non-scratch indicatorGravatar bsalomon2014-10-09
| | | | | | | | BUG=skia:2889 Committed: https://skia.googlesource.com/skia/+/9eefe0851eeaa8ded05b4774ebcb38ed201d5dbf Review URL: https://codereview.chromium.org/639873002
* Draw more accurate thick-stroked Beziers (disabled)Gravatar caryclark2014-10-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Draw thick-stroked Beziers by computing the outset quadratic, measuring the error, and subdividing until the error is within a predetermined limit. To try this CL out, change src/core/SkStroke.h:18 to #define QUAD_STROKE_APPROXIMATION 1 or from the command line: CPPFLAGS="-D QUAD_STROKE_APPROXIMATION=1" ./gyp_skia Here's what's in this CL: bench/BezierBench.cpp : a microbench for examining where the time is going gm/beziers.cpp : random Beziers with various thicknesses gm/smallarc.cpp : a distillation of bug skia:2769 samplecode/SampleRotateCircles.cpp : controls added for error, limit, width src/core/SkStroke.cpp : the new stroke implementation (disabled) tests/StrokerTest.cpp : a stroke torture test that checks normal and extreme values The new stroke algorithm has a tweakable parameter: stroker.setError(1); (SkStrokeRec.cpp:112) The stroke error is the allowable gap between the midpoint of the stroke quadratic and the center Bezier. As the projection from the quadratic approaches the endpoints, the error is decreased proportionally so that it is always inside the quadratic curve. An overview of how this works: - For a given T range of a Bezier, compute the perpendiculars and find the points outset and inset for some radius. - Construct tangents for the quadratic stroke. - If the tangent don't intersect between them (may happen with cubics), subdivide. - If the quadratic stroke end points are close (again, may happen with cubics), draw a line between them. - Compute the quadratic formed by the intersecting tangents. - If the midpoint of the quadratic is close to the midpoint of the Bezier perpendicular, return the quadratic. - If the end of the stroke at the Bezier midpoint doesn't intersect the quad's bounds, subdivide. - Find where the Bezier midpoint ray intersects the quadratic. - If the intersection is too close to the quad's endpoints, subdivide. - If the error is large proportional to the intersection's distance to the quad's endpoints, subdivide. BUG=skia:723,skia:2769 Review URL: https://codereview.chromium.org/558163005
* Adding 3D lut color filterGravatar sugoi2014-10-09
| | | | | | | | Included in this cl is support for 3D textures. BUG=skia: Review URL: https://codereview.chromium.org/580863004
* Make the Sk GL context class an abstract base classGravatar kkinnunen2014-10-09
| | | | | | | | | | | | | | | | | | | | | | | Make the Sk GL context class, SkGLNativeContext, an abstract base class. Before, it depended on ifdefs to implement the platform dependent polymorphism. Move the logic to subclasses of the various platform implementations. This a step to enable Skia embedders to compile dm and bench_pictures. The concrete goal is to support running these test apps with Chromium command buffer. With this change, Chromium can implement its own version of SkGLNativeContext that uses command buffer, and host the implementation in its own repository. Implements the above by renaming the SkGLContextHelper to SkGLContext and removing the unneeded SkGLNativeContext. Also removes SkGLNativeContext::AutoRestoreContext functionality, it appeared to be unused: no use in Skia code, and no tests. BUG=skia:2992 Committed: https://skia.googlesource.com/skia/+/a90ed4e83897b45d6331ee4c54e1edd4054de9a8 Review URL: https://codereview.chromium.org/630843002
* GrResourceCache2 manages scratch texture.Gravatar bsalomon2014-10-08
| | | | | | BUG=skia:2889 Review URL: https://codereview.chromium.org/608883003
* Revert of Make the Sk GL context class an abstract base class (patchset #4 ↵Gravatar bsalomon2014-10-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:60001 of https://codereview.chromium.org/630843002/) Reason for revert: nanobech failing on Android Original issue's description: > Make the Sk GL context class an abstract base class > > Make the Sk GL context class, SkGLNativeContext, an abstract base class. Before, > it depended on ifdefs to implement the platform dependent polymorphism. Move > the logic to subclasses of the various platform implementations. > > This a step to enable Skia embedders to compile dm and bench_pictures. The > concrete goal is to support running these test apps with Chromium command buffer. > > With this change, Chromium can implement its own version of SkGLNativeContext > that uses command buffer, and host the implementation in its own repository. > > Implements the above by renaming the SkGLContextHelper to SkGLContext and > removing the unneeded SkGLNativeContext. Also removes > SkGLNativeContext::AutoRestoreContext functionality, it appeared to be unused: > no use in Skia code, and no tests. > > BUG=skia:2992 > > Committed: https://skia.googlesource.com/skia/+/a90ed4e83897b45d6331ee4c54e1edd4054de9a8 TBR=kkinnunen@nvidia.com NOTREECHECKS=true NOTRY=true BUG=skia:2992 Review URL: https://codereview.chromium.org/639793002
* Make the Sk GL context class an abstract base classGravatar kkinnunen2014-10-08
| | | | | | | | | | | | | | | | | | | | | Make the Sk GL context class, SkGLNativeContext, an abstract base class. Before, it depended on ifdefs to implement the platform dependent polymorphism. Move the logic to subclasses of the various platform implementations. This a step to enable Skia embedders to compile dm and bench_pictures. The concrete goal is to support running these test apps with Chromium command buffer. With this change, Chromium can implement its own version of SkGLNativeContext that uses command buffer, and host the implementation in its own repository. Implements the above by renaming the SkGLContextHelper to SkGLContext and removing the unneeded SkGLNativeContext. Also removes SkGLNativeContext::AutoRestoreContext functionality, it appeared to be unused: no use in Skia code, and no tests. BUG=skia:2992 Review URL: https://codereview.chromium.org/630843002
* Save/Restore around bench runs.Gravatar mtklein2014-10-02
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/619353002
* check for newSurface failureGravatar reed2014-10-02
| | | | | | BUG=skia: Review URL: https://codereview.chromium.org/622063003
* Demote getCount, getDepth, and clear to RTree-only methods.Gravatar mtklein2014-10-02
| | | | | | | | We use them only to test RTree. BUG=skia: Review URL: https://codereview.chromium.org/622773003
* BBHs: void* data -> unsigned dataGravatar mtklein2014-10-02
| | | | | | | | | | | | | | Now that the old backend's not using BBHs, we can specialize them for SkRecord's needs. The only thing we really want to store is op index, which should always be small enough to fit into an unsigned (unsigned also helps keep it straight from other ints floating around). This means we'll need half (32-bit) or a quarter (64-bit) the bytes in SkTileGrid, because we don't have to store an extra int for ordering. BUG=skia:2834 Review URL: https://codereview.chromium.org/617393004
* Remove DEPRECATED_beginRecording().Gravatar mtklein2014-10-01
| | | | | | | | | | | | | | | This removes: 1) ability to record old pictures with SkPictureRecorder; 2) a couple tests specific to the old backend. The functionality of DEPRECATED_beginRecording() now lives in (private) SkPicture::Backport(), which is the only place we need it now. BUG=skia: TBR=reed@google.com Review URL: https://codereview.chromium.org/618303002
* Make "priv" classes for GrTexure and GrSurface.Gravatar bsalomon2014-09-30
| | | | | | | | R=robertphillips@google.com, egdaniel@google.com, joshualitt@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/596053002
* Revert of Make "priv" classes for GrTexure and GrSurface. (patchset #9 ↵Gravatar robertphillips2014-09-30
| | | | | | | | | | | | | | | | | | | | | | | id:260001 of https://codereview.chromium.org/596053002/) Reason for revert: Breaking the Chrome builds with: lib/libcc.so: error: undefined reference to 'GrAutoScratchTexture::detach()' (http://108.170.220.120:10117/builders/Canary-Chrome-Ubuntu13.10-Ninja-x86_64-DRT/builds/2990/steps/Retry_BuildContentShell_1/logs/stdio) Original issue's description: > Make "priv" classes for GrTexure and GrSurface. R=egdaniel@google.com, joshualitt@google.com, bsalomon@google.com TBR=bsalomon@google.com, egdaniel@google.com, joshualitt@google.com NOTREECHECKS=true NOTRY=true Author: robertphillips@google.com Review URL: https://codereview.chromium.org/618733002
* Make "priv" classes for GrTexure and GrSurface.Gravatar bsalomon2014-09-29
| | | | | | | | R=robertphillips@google.com, egdaniel@google.com, joshualitt@google.com, joshualitt@chromium.org Author: bsalomon@google.com Review URL: https://codereview.chromium.org/596053002
* remove alphatype from colortableGravatar reed2014-09-29
| | | | | | | | | | | the owning bitmap is (already) responsible for knowing the alphatype BUG=skia: R=djsollen@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/611093002
* Have nanobench --verbose mode always just print integer nanoseconds.Gravatar mtklein2014-09-24
| | | | | | | | | | | | | Don't know that anyone but me is using this. Speak up now! BUG=skia: NOTREECHECKS=true R=mtklein@google.com, tfarina@chromium.org Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/599913002
* nanobench: print max RSS in debug mode too.Gravatar mtklein2014-09-18
| | | | | | | | | BUG=skia:2949 R=mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/581083002
* Revert of nanobench: lazily decode bitmaps from SKPs (patchset #1 id:1 of ↵Gravatar mtklein2014-09-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/572933006/) Reason for revert: skia:2944 Original issue's description: > nanobench: lazily decode bitmaps from SKPs > > This makes it considerably cheaper to run SKP recording benchmarks, without > affecting their measurements and without really affecting SKP playback > benchmarks at all. > > On my machine, running out/Release/nanobench --match skp --config nondrendering > drops in run time from 6.7s to 2.5s, and the peak RAM usage drops from 129M to 50M. > > I'm strongly considering making this lazy decoding the default. > > BUG=skia:2944 > > Committed: https://skia.googlesource.com/skia/+/d664c21a38de98d8db210c46f7a8c4187f1534da R=robertphillips@google.com, mtklein@chromium.org TBR=mtklein@chromium.org, robertphillips@google.com NOTREECHECKS=true NOTRY=true BUG=skia:2944 Author: mtklein@google.com Review URL: https://codereview.chromium.org/554583004
* nanobench: lazily decode bitmaps from SKPsGravatar mtklein2014-09-16
| | | | | | | | | | | | | | | | | | This makes it considerably cheaper to run SKP recording benchmarks, without affecting their measurements and without really affecting SKP playback benchmarks at all. On my machine, running out/Release/nanobench --match skp --config nondrendering drops in run time from 6.7s to 2.5s, and the peak RAM usage drops from 129M to 50M. I'm strongly considering making this lazy decoding the default. BUG=skia: R=robertphillips@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/572933006
* Tag recording picture nesting bench as nonrendering.Gravatar mtklein2014-09-16
| | | | | | | | | | | | | Doesn't hurt as is, but we're running it several times unneccesarily. (I couldn't compile without removing an unused constant in that other GM...) BUG=skia: R=fmalita@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/570303002
* Fix leak in PictureNestingBenchGravatar fmalita2014-09-15
| | | | | | | | | R=mtklein@google.com TBR=mtklein@google.com Author: fmalita@chromium.org Review URL: https://codereview.chromium.org/569313004
* Nested picture nanobenchGravatar fmalita2014-09-15
| | | | | | | | | | Measure picture overhead for recording & playback using a Sierpinski fractal (http://skfiddle.com/c/a2b6e60d775543b7c29a5d45d0371c02) with various picture nesting levels. R=mtklein@google.com, reed@google.com Author: fmalita@chromium.org Review URL: https://codereview.chromium.org/566393002
* Change SkResourceCache to take a Visitor inside its find().Gravatar reed2014-09-15
| | | | | | | | | | | This reverts commit 595aa05efcb504e85358b8d328ac4a9fa1c46e2e. BUG=skia: R=mtklein@google.com, danakj@chromium.org Author: reed@google.com Review URL: https://codereview.chromium.org/569353002
* Revert of Change SkResourceCache to take a Visitor inside its find(). ↵Gravatar reed2014-09-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (patchset #2 id:20001 of https://codereview.chromium.org/567393002/) Reason for revert: crashes on android bots, haven't diagnosed yet Original issue's description: > Change SkResourceCache to take a Visitor inside its find(). > > This simplifies the API/contract, in that there are not any exposed > lock/unlock scopes. > > > patch from issue 572573002 > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/dee6a8e67db39fcbde2b3bb09be1d088ebb9db8a R=mtklein@google.com, danakj@chromium.org TBR=danakj@chromium.org, mtklein@google.com NOTREECHECKS=true NOTRY=true BUG=skia: Author: reed@google.com Review URL: https://codereview.chromium.org/569303002
* 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
* 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
* 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 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
* Update DM JSON format.Gravatar mtklein2014-09-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ex. dm --match patch -w bad --key arch x86 gpu nvidia model z620 --properties git_hash abcd build_number 20 -> { "build_number" : "20", "git_hash" : "abcd", "key" : { "arch" : "x86", "gpu" : "nvidia", "model" : "z620" }, "results" : [ { "key" : { "config" : "565", "name" : "ninepatch-stretch" }, "md5" : "f78cfafcbabaf815f3dfcf61fb59acc7", "options" : { "source_type" : "GM" } }, { "key" : { "config" : "8888", "name" : "ninepatch-stretch" }, "md5" : "3e8a42f35a1e76f00caa191e6310d789", "options" : { "source_type" : "GM" } }, ... This breaks -r, but that's okay. Going to follow up this CL with one that removes that entirely. BUG=skia: R=stephana@google.com, jcgregorio@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/551873003
* "NULL !=" = NULLGravatar bsalomon2014-09-05
| | | | | | | | R=reed@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/544233002
* Change SkPicture::draw to playbackGravatar robertphillips2014-09-04
| | | | | | | | R=reed@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/540963002
* Hide fields in SkImageInfoGravatar reed2014-09-03
| | | | | | | | | R=rmistry@google.com TBR=bsalomon Author: reed@google.com Review URL: https://codereview.chromium.org/536003002
* Try out scalar picture sizesGravatar robertphillips2014-08-29
| | | | | | | | | | This paves the way for removing the 'fTile' parameter from SkPictureShader (although that should be a different CL). If we like this we could also move to providing an entire cull SkRect. R=reed@google.com, mtklein@google.com, fmalita@google.com, fmalita@chromium.org Author: robertphillips@google.com Review URL: https://codereview.chromium.org/513983002
* rename ScaledImageCache to ResourceCacheGravatar reed2014-08-28
| | | | | | | | | BUG=skia: R=bsalomon@google.com, mtklein@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/511283002
* Convert BBH APIs to use SkRect.Gravatar mtklein2014-08-27
| | | | | | | | | | | | | Still TODO: convert internals of SkTileGrid.cpp and SkRTree.cpp to work in floats too. NOTREECHECKS=true BUG=skia:1021 R=robertphillips@google.com, reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/511613002
* Clean up some benches that answer questions we're no longer asking.Gravatar mtklein2014-08-27
| | | | | | | | | | | NOTREECHECKS=true BUG=skia: R=reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/512503002
* Remove SkQuadTree.Gravatar mtklein2014-08-26
| | | | | | | | | | | | | | We're not testing it to the same degree we do RTree and TileGrid. Any changes we'll make to BBH APIs become 33% easier without it. If find we want it again, we can always resurrect it. BUG=skia:1021,skia:2834 R=robertphillips@google.com, mtklein@google.com TBR=reed Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/500373005
* Make GrGpuResources register with GrResourceCache2 after fully constructed.Gravatar bsalomon2014-08-26
| | | | | | | | | | Committed: https://skia.googlesource.com/skia/+/d68b3e491bb765beb7ca5e4ac8e0c80dedf5a83b R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/504313002
* Revert of Make GrGpuResources register with GrResourceCache2 after fully ↵Gravatar bsalomon2014-08-26
| | | | | | | | | | | | | | | | | | | | | constructed. (patchset #3 of https://codereview.chromium.org/504313002/) Reason for revert: Breaking the bots Original issue's description: > Make GrGpuResources register with GrResourceCache2 after fully constructed. > > Committed: https://skia.googlesource.com/skia/+/d68b3e491bb765beb7ca5e4ac8e0c80dedf5a83b R=robertphillips@google.com TBR=robertphillips@google.com NOTREECHECKS=true NOTRY=true Author: bsalomon@google.com Review URL: https://codereview.chromium.org/488463004
* Make GrGpuResources register with GrResourceCache2 after fully constructed.Gravatar bsalomon2014-08-26
| | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/504313002
* retool image cache to be generic cache, allowing the client to subclass ↵Gravatar reed2014-08-26
| | | | | | | | | | | | | | | "Rec", so they can provide a custom Key and arbitrary Value. Follow-on CLs - rename ScaledimageCache to something like GeneralCache - explore if we can use call-backs or some mechanism to completely hide "lock/unlock", by forcing all clients to support "copying" their value out of the cache as the result of a Find. R=mtklein@google.com, senorblanco@google.com, bsalomon@google.com, qiankun.miao@intel.com, senorblanco@chromium.org Author: reed@google.com Review URL: https://codereview.chromium.org/507483002
* Revert of Benchmark designed to exercise fractional image scale/translation ↵Gravatar djsollen2014-08-25
| | | | | | | | | | | | | | | | | | | | | | | | | | (patchset #2 of https://codereview.chromium.org/491793003/) Reason for revert: fires asserts on Linux Debug builds http://108.170.220.120:10115/builders/Test-Ubuntu12-ShuttleA-GTX660-x86_64-Debug/builds/1910 Original issue's description: > Benchmark designed to exercise fractional image scale/translation > > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/5fc226641a0926dddbf70ba784f344881f4c05b9 R=reed@google.com, humper@google.com TBR=humper@google.com, reed@google.com NOTREECHECKS=true NOTRY=true BUG=skia: Author: djsollen@google.com Review URL: https://codereview.chromium.org/470063007
* Benchmark designed to exercise fractional image scale/translationGravatar humper2014-08-25
| | | | | | | | | BUG=skia: R=reed@google.com Author: humper@google.com Review URL: https://codereview.chromium.org/491793003
* fix numerical overflows in 565 blendsGravatar reed2014-08-22
| | | | | | | | | BUG=skia:2797 R=mtklein@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/474983007
* Cleanup: Remove BenchTool xcode project file.Gravatar tfarina2014-08-22
| | | | | | | | | | BUG=None TEST=None R=mtklein@google.com Author: tfarina@chromium.org Review URL: https://codereview.chromium.org/491263003
* Add --bbh (default true) to nanobench.Gravatar mtklein2014-08-21
| | | | | | | | | | | | | | | | | | | | | | | | | Chrome's using a bounding box, so it's a good idea for our bots to do so too. When set, we'll create an SkTileGrid to match the parameters of --clip, and so should always hit its fast path. This will impose a small overhead (querying the BBH) on all SKPs, but make large SKPs render more quickly. E.g. on GPU desk_pokemonwiki should show about a 30% improvement, tabl_mozilla about 40%, and one very long page from my personal suite, askmefast.com, gets 5x faster. (The performance changes are not the point of the CL, but something we should be aware of.) BUG= R=bsalomon@google.com, mtklein@google.com, robertphillips@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/497493003
* expose generalized imagecache keyGravatar reed2014-08-21
| | | | | | | | | BUG=skia: R=mtklein@google.com, halcanary@google.com, qiankun.miao@intel.com Author: reed@google.com Review URL: https://codereview.chromium.org/483493003