aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
Commit message (Collapse)AuthorAge
* Clean up a bit after SkPictureData/SkPicturePlayback splitGravatar robertphillips2014-07-08
| | | | | | | | | | | | | This CL begins setting up the SkPicturePlayback split by simplifying the class and componentizing it a bit. It: fuses SkPictureData::OperationList into SkPicture::OperationList adds a handleOp method to SkPicturePlayback that can be reused by derived classes removes a couple debugging tools (ENABLE_TIME_DRAW & SPEW_CLIP_SKIPPING) R=mtklein@google.com, reed@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/378703002
* fix WBMP image will get null color table when draw in RGB565 CanvasGravatar Derek Sollenberger2014-07-08
| | | | | | | | | | | | | Symptom: draw Index8 to RGB565 will using SkColorTable::lock16BitCache and return a null array. Root Cause:lock16BitCache return null pointer because default type is kPremul_SkAlphaType Solution: WBMP color table should be kOpaque_SkAlphaType Reproduce steps: draw a WBMP with a matrix that apply rotate and transform This patch was proposed by arthur_hung at htc.com to the AOSP project. R=reed@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/377443007
* MIPS: added optimizations for functions from SkBitmapProcStateGravatar djordje.pesut2014-07-08
| | | | | | | | | | | | | | gain is ~30% following functions are optimized: SI8_D16_nofilter_DX SI8_opaque_D32_nofilter_DX R=djsollen@google.com, teodora.petrovic@gmail.com Author: djordje.pesut@imgtec.com Review URL: https://codereview.chromium.org/336533003
* Turn on threaded DMQuiltTask drawing for old-format SkPictures too.Gravatar mtklein2014-07-07
| | | | | | | | | | | This required the same SkBitmap copying that we added today to SkRecord. BUG=skia: R=reed@android.com, robertphillips@google.com, mtklein@google.com, reed@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/375703002
* Handle close button in SkOSWindow_Unix.Gravatar bungeman2014-07-07
| | | | | | | | | | | | Currently X with most Window managers calls 'exit' when the close button is used. This can cause issues as the Window is not properly destroyed. With this change we can handle this window message and properly exit. R=reed@google.com Author: bungeman@google.com Review URL: https://codereview.chromium.org/377733002
* Revert of Make GrDrawState and GrPaint take GrEffect* instead of ↵Gravatar reed2014-07-07
| | | | | | | | | | | | | | | | | | | | | | | | | GrEffectRef*. (https://codereview.chromium.org/377503004/) Reason for revert: broke linux builders Original issue's description: > Make GrDrawState and GrPaint take GrEffect* instead of GrEffectRef*. > > Make Sk-effect virtuals produce GrEffect* rather than GrEffectRef* > > Make GrEffectRef a typedef for GrEffect. > > Committed: https://skia.googlesource.com/skia/+/2011fe9cdfa63b83489a146cea6a724cede352c8 R=robertphillips@google.com, bsalomon@google.com TBR=bsalomon@google.com, robertphillips@google.com NOTREECHECKS=true NOTRY=true Author: reed@google.com Review URL: https://codereview.chromium.org/372053003
* Make GrDrawState and GrPaint take GrEffect* instead of GrEffectRef*.Gravatar bsalomon2014-07-07
| | | | | | | | | | | | Make Sk-effect virtuals produce GrEffect* rather than GrEffectRef* Make GrEffectRef a typedef for GrEffect. R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/377503004
* YUV to RGB converterGravatar sugoi2014-07-07
| | | | | | | | | | | | | This is a first piece of the GPU YUV decoder, which is the actual effect that performs the conversion. For now, it simply applies the conversion matrix, since it is all I need. I may add modes if different matrices need to be applied or if I add color profile support here. I'll try to keep these cls short and easy to review, but there should be a few of them coming once this one is in. BUG=skia: R=senorblanco@chromium.org, senorblanco@google.com, reed@google.com, bsalomon@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/378503006
* guard registering mallocpixelref for chromeGravatar reed2014-07-07
| | | | | | | | | | | companion to https://codereview.chromium.org/320873003 NOTRY=True TBR= Author: reed@google.com Review URL: https://codereview.chromium.org/373903002
* remove unneeded flags (have been purged from chrome and android)Gravatar reed2014-07-07
| | | | | | | | TBR= Author: reed@google.com Review URL: https://codereview.chromium.org/372793003
* change pixelref to not inherit from SkFlattenableGravatar reed2014-07-07
| | | | | | | | | | If I can "inline" MallocPixelRef unflatten, then I think we can delete this code. The only caller today should be unflattening in the legacy path for bitmaps. R=robertphillips@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/320873003
* Split SkPicturePlayback out of SkPictureDataGravatar robertphillips2014-07-07
| | | | | | | | | | | | | | | | | | | This splits the playback functionality out of SkPictureData. The old SkPictureData::draw method is pulled out along with its supporting functions as verbatim as possible. Some follow on CLs will be required to: re-enable profiling in the debugger (and remove the vestiges of SkTimedPicture) re-enable display of command offsets in the picture (this should probably wait until we've switched to SkRecord though) Clean up CachedOperationList (maybe fuse with SkPicture::OperationList) Split SkPicturePlayback into a base class and two derived classes Implement parallel version of GatherGPUInfo for SkRecord Landing this is blocked on removing Android's use of the abortPlayback entry point. R=mtklein@google.com, reed@google.com Author: robertphillips@google.com Review URL: https://codereview.chromium.org/377623002
* don't look at SK_SCALAR_IS_FLOAT -- it is true, but no longer definedGravatar reed2014-07-07
| | | | | | | | TBR= Author: reed@google.com Review URL: https://codereview.chromium.org/371033004
* Remove use of GrEffectRef from draw state and below.Gravatar bsalomon2014-07-07
| | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/372773002
* Add return to SkBoxBlurGetPlatformProcs_SSE4.Gravatar scroggo2014-07-07
| | | | | | | | | | This fixes Android build. R=reed@google.com, mtklein@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/378613002
* Add always-threaded SkRecord quilt tests.Gravatar mtklein2014-07-07
| | | | | | | | | | | | | | | | | | | | | Now that we're drawing tiles threaded like implside painting, remove the checks that those lock counts are balanced. They're just not right for anyone anymore. SkBitmaps themselves are not threadsafe (even const ones), so shallow copy them on playback of an SkRecord. (The underlying SkPixelRefs are threadsafe.) Simplify quilt drawing by using SkBitmap::extractSubset. No need for locking. Bump up to 256x256 tiles. 16x16 tiles just murders performance (way too much contention). This has the nice side effect of letting us enable a bunch more GMs for quilt mode; they drew wrong with small tiles but exactly right with large. BUG=171776 R=reed@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/371023005
* Remove GrDrawState::CommonStateGravatar bsalomon2014-07-07
| | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/367163002
* Remove vertical/horizontal metrics selection.Gravatar bungeman2014-07-07
| | | | | | | | R=reed@google.com Author: bungeman@google.com Review URL: https://codereview.chromium.org/370463002
* Remove deferred version of GrDrawState.Gravatar bsalomon2014-07-07
| | | | | | | | R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/368913003
* Add SSE4 version of BlurImage optimizations.Gravatar henrik.smiding2014-07-07
| | | | | | | | | | | | | | | | Adds an SSE4.1 version of the existing BlurImage optimizations. Performance of blur_image_filter_* benchmarks show a 10-50% improvement on Linux/Ubuntu Core i7. Signed-off-by: Henrik Smiding <henrik.smiding@intel.com> Committed: https://skia.googlesource.com/skia/+/2830632ce93c97ed7647b13348365ea92e4ea665 R=mtklein@google.com, reed@chromium.org Author: henrik.smiding@intel.com Review URL: https://codereview.chromium.org/366593004
* with no save flag options, we can directly reference matrix and clip in MCRecGravatar reed2014-07-07
| | | | | | | | | | | patch from issue 364973003 R=fmalita@chromium.org TBR=fmalita@google.com Author: reed@google.com Review URL: https://codereview.chromium.org/364193005
* Add Instant Trace Event for shader compilation in gpu which outputs shader ↵Gravatar egdaniel2014-07-07
| | | | | | | | | | | text as attribute BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/368943002
* Revert of Add SSE4 version of BlurImage optimizations. ↵Gravatar reed2014-07-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/366593004/) Reason for revert: breaks linker on chrome [04:36:09.966000] [503/5965] LIB obj\chrome\installer_util.lib [04:36:10.466000] FAILED: C:\Users\chrome-bot\buildbot\third_party\depot_tools\python276_bin\python.exe gyp-win-tool link-with-manifests environment.x86 True skia.dll "C:\Users\chrome-bot\buildbot\third_party\depot_tools\python276_bin\python.exe gyp-win-tool link-wrapper environment.x86 False link.exe /nologo /IMPLIB:skia.dll.lib /DLL /OUT:skia.dll @skia.dll.rsp" 2 mt.exe rc.exe "obj\skia\skia.skia.dll.intermediate.manifest" obj\skia\skia.skia.dll.generated.manifest [04:36:10.466000] skia.opts_check_x86.obj : error LNK2019: unresolved external symbol "bool __cdecl SkBoxBlurGetPlatformProcs_SSE4(void (__cdecl**)(unsigned int const *,int,unsigned int *,int,int,int,int,int),void (__cdecl**)(unsigned int const *,int,unsigned int *,int,int,int,int,int),void (__cdecl**)(unsigned int const *,int,unsigned int *,int,int,int,int,int),void (__cdecl**)(unsigned int const *,int,unsigned int *,int,int,int,int,int))" (?SkBoxBlurGetPlatformProcs_SSE4@@YA_NPAP6AXPBIHPAIHHHHH@Z222@Z) referenced in function "bool __cdecl SkBoxBlurGetPlatformProcs(void (__cdecl**)(unsigned int const *,int,unsigned int *,int,int,int,int,int),void (__cdecl**)(unsigned int const *,int,unsigned int *,int,int,int,int,int),void (__cdecl**)(unsigned int const *,int,unsigned int *,int,int,int,int,int),void (__cdecl**)(unsigned int const *,int,unsigned int *,int,int,int,int,int))" (?SkBoxBlurGetPlatformProcs@@YA_NPAP6AXPBIHPAIHHHHH@Z222@Z) [04:36:10.466000] [04:36:10.466000] skia.dll : fatal error LNK1120: 1 unresolved externals Original issue's description: > Add SSE4 version of BlurImage optimizations. > > Adds an SSE4.1 version of the existing BlurImage optimizations. > Performance of blur_image_filter_* benchmarks show a 10-50% > improvement on Linux/Ubuntu Core i7. > > Signed-off-by: Henrik Smiding <henrik.smiding@intel.com> > > Committed: https://skia.googlesource.com/skia/+/2830632ce93c97ed7647b13348365ea92e4ea665 R=mtklein@google.com, henrik.smiding@intel.com TBR=henrik.smiding@intel.com, mtklein@google.com NOTREECHECKS=true NOTRY=true Author: reed@chromium.org Review URL: https://codereview.chromium.org/375503003
* Linear-time implementation of willPlaybackBitmaps(), computed & cachedGravatar tomhudson2014-07-05
| | | | | | | | | | | | | on construction in SkPicture. Unit test. Template trickery thanks to mtklein@. BUG=skia:2702 R=mtklein@google.com, reed@android.com, reed@google.com, tomhudson@google.com, mtklein, reed Author: tomhudson@chromium.org Review URL: https://codereview.chromium.org/366443002
* Add SSE4 version of BlurImage optimizations.Gravatar henrik.smiding2014-07-04
| | | | | | | | | | | | | | Adds an SSE4.1 version of the existing BlurImage optimizations. Performance of blur_image_filter_* benchmarks show a 10-50% improvement on Linux/Ubuntu Core i7. Signed-off-by: Henrik Smiding <henrik.smiding@intel.com> R=mtklein@google.com Author: henrik.smiding@intel.com Review URL: https://codereview.chromium.org/366593004
* Fix SkColorFilterImageFilter matrix optimization.Gravatar senorblanco2014-07-03
| | | | | | | | | | | | | The order of matrices passed to multiplication was wrong (apparently, this optimization was only being tested with matrices which commute). See Chrome bug http://crbug.com/378362 R=sugoi@chromium.org Author: senorblanco@chromium.org Review URL: https://codereview.chromium.org/371523002
* Adding 64 bit checksGravatar sugoi2014-07-03
| | | | | | | | | | | | | Added a few more checks to avoid overflowing 32 bit sizes while computing convolutions. I also changed a dangerously misleading INHERITED typedef. BUG=389570 R=senorblanco@google.com, senorblanco@chromium.org Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/361403006
* Revert of Caching the result of readPixelsSupported ↵Gravatar reed2014-07-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/364193004/) Reason for revert: appears to crash GM on Ubuntu and Win8 http://108.170.220.120:10117/builders/Test-Ubuntu12-ShuttleA-GTX660-x86-Release/builds/1237/steps/GenerateGMs/logs/stdio Original issue's description: > Caching the result of readPixelsSupported > > The call was calling GR_GL_GetIntegerv 2 times for each readPixels > and thus was causing a loss of performance > > (resubmit of issue 344793008) > > Benchmark url: http://packages.gkny.fr/tst/index.html > > BUG=skia:2681 > > Committed: https://skia.googlesource.com/skia/+/753a2964afe5661ce9b2a8ca77ca9d0aabd3173c R=junov@chromium.org, piotaixr@chromium.org TBR=junov@chromium.org, piotaixr@chromium.org NOTREECHECKS=true NOTRY=true BUG=skia:2681 Author: reed@chromium.org Review URL: https://codereview.chromium.org/367323003
* move SkChecksum and SkEmptyShader to privateGravatar reed2014-07-03
| | | | | | | | TBR=reed@google.com Author: reed@chromium.org Review URL: https://codereview.chromium.org/366133002
* Caching the result of readPixelsSupportedGravatar piotaixr2014-07-03
| | | | | | | | | | | | | | | | The call was calling GR_GL_GetIntegerv 2 times for each readPixels and thus was causing a loss of performance (resubmit of issue 344793008) Benchmark url: http://packages.gkny.fr/tst/index.html BUG=skia:2681 R=junov@chromium.org Author: piotaixr@chromium.org Review URL: https://codereview.chromium.org/364193004
* Add functions to support NV_path_rendering in OpenGL ESGravatar kkinnunen2014-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add OpenGL ES extension functions needed to support NV_path_rendering in OpenGL ES. The added glProgramPathFragmentInputGenNV call is defined in NV_path_rendering revision 30, similar to following: Append to the end of the "Shader Inputs" subsection of Section 3.12.2 "Shader Execution": The command void ProgramPathFragmentInputGenNV(uint program, int location, enum genMode, int components, const float *coeffs); controls how a user-defined (non-built-in) fragment input of a GLSL program object is computed for fragment shading operations that occur as a result of CoverFillPathNV or CoverStrokePathNV. /program/ names a GLSL program object. If /program/ has not been successfully linked, the error INVALID_OPERATION is generated. The given fragment input generation state is loaded into the fragment input variable location identified by /location/. This location is a value returned either by GetProgramResourceLocation with a /programInterface/ of FRAGMENT_INPUT_NV and a given fragment shader input variable name or by GetProgramResourceiv with FRAGMENT_INPUT_NV for the /programInterface/ and LOCATION for the property for a given fragment input resource index. .... glProgramPathFragmentInputGenNV will be used instead of glPathTexGen, because the latter depends on fixed function pipeline that is not exposed in ES. Also add glGetProgramResourceLocation from OpenGL 4.3 or ARB_program_interface_query. Also add FRAGMENT_INPUT define to be used with glGetProgramResourceLocation. The added functions are not used yet, but they're needed when implementing NV_path_rendering support for OpenGL ES. They can also be used on OpenGL. Remove uncalled NV_path_rendering functions, so they do not cause confusion or take space in the interface definition. The ones that are later used can be re-added when needed. Remove definitions NV_path_rendering that are for NV_path_rendering function parameters that are not used. The ones that are later used can be re-added when needed. Committed: https://skia.googlesource.com/skia/+/4a995dfff2ecf91e8bf999d77e3218cec596232c R=bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/345723002
* Check pixelRef before attempting to ktx encode.Gravatar scroggo2014-07-02
| | | | | | | | | | | | | | If there is no pixelRef, do not attempt to dereference it. This was caught running on Android, where we don't have the resources folder (tracked in b/14406768). We fail to decode anything, and then attempt to encode an SkBitmap without a pixelRef. R=krajcevski@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/362413005
* Make GrAllocator Iter return non-const TGravatar bsalomon2014-07-02
| | | | | | | | R=egdaniel@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/362333004
* Remove SK_IGNORE_FASTER_TEXT_FIX.Gravatar Ben Wagner2014-07-02
| | | | This flag is no longer defined, so remove its use and guarded code.
* Remove SK_IGNORE_DWRITE_RENDERING_FIX.Gravatar Ben Wagner2014-07-02
| | | | This flag is no longer defined anywhere, so remove it's use.
* Revert of Remove the AA requirement for selecting GrEffect-based clipping. ↵Gravatar mtklein2014-07-02
| | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/367013003/) Reason for revert: We think this is breaking the roll. Original issue's description: > Remove the AA requirement for selecting GrEffect-based clipping. > > Also, optionally use the scissor for a bw clip rect element instead of an effect. > > Committed: https://skia.googlesource.com/skia/+/a73218bbbdcbe458651d10815e8d3b73d71b8e11 > > Committed: https://skia.googlesource.com/skia/+/e9a729cb4d3f05b9c750dc1f63a9cc65b5659f04 R=robertphillips@google.com, bsalomon@google.com TBR=bsalomon@google.com, robertphillips@google.com NOTREECHECKS=true NOTRY=true Author: mtklein@google.com Review URL: https://codereview.chromium.org/361313002
* Exclude Clang on Windows too. Comment this up a bit.Gravatar mtklein2014-07-02
| | | | | | | | | BUG=391016 R=tomhudson@chromium.org, mtklein@google.com, rnk@chromium.org, thakis@chromium.org Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/363983004
* Combine clip stack and clip origin into one struct in GrIODB.Gravatar bsalomon2014-07-02
| | | | | | | | R=egdaniel@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/364823004
* Remove the AA requirement for selecting GrEffect-based clipping.Gravatar bsalomon2014-07-02
| | | | | | | | | | | | Also, optionally use the scissor for a bw clip rect element instead of an effect. Committed: https://skia.googlesource.com/skia/+/a73218bbbdcbe458651d10815e8d3b73d71b8e11 R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/367013003
* Disable assembly code in MemorySanitizer builds.Gravatar Mike Klein2014-07-02
| | | | | | | | | | MemorySanitizer is an unitialized memory use detector which is used in Chromium, and does not presently support assembly code. BUG=chromium:344505, chromium:373739 R=mtklein@google.com Review URL: https://codereview.chromium.org/367973005
* Revert of Remove the AA requirement for selecting GrEffect-based clipping. ↵Gravatar bsalomon2014-07-02
| | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/367013003/) Reason for revert: Assertion failing. Original issue's description: > Remove the AA requirement for selecting GrEffect-based clipping. > > Also, optionally use the scissor for a bw clip rect element instead of an effect. > > Committed: https://skia.googlesource.com/skia/+/a73218bbbdcbe458651d10815e8d3b73d71b8e11 R=robertphillips@google.com TBR=robertphillips@google.com NOTREECHECKS=true NOTRY=true Author: bsalomon@google.com Review URL: https://codereview.chromium.org/369613002
* Fix no previous prototype for function errorGravatar halcanary2014-07-02
| | | | | | | | | BUG=skia:2720 R=scroggo@google.com, caryclark@google.com Author: halcanary@google.com Review URL: https://codereview.chromium.org/363983002
* Remove the AA requirement for selecting GrEffect-based clipping.Gravatar bsalomon2014-07-02
| | | | | | | | | | Also, optionally use the scissor for a bw clip rect element instead of an effect. R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/367013003
* CTFontCopy*Name may return NULL.Gravatar bungeman2014-07-02
| | | | | | | | | BUG=skia:2708 R=caryclark@google.com, reed@google.com Author: bungeman@google.com Review URL: https://codereview.chromium.org/365683004
* Reduce integer divides in GrAllocatorGravatar bsalomon2014-07-02
| | | | | | | | R=egdaniel@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/362023002
* Fix int to float bug in shader on gpu Dotted Line clGravatar egdaniel2014-07-02
| | | | | | | | | | | | NOTRY=True NOTREECHECKS=True R=bsalomon@google.com TBR=bsalomon@google.com BUG=skia: Author: egdaniel@google.com Review URL: https://codereview.chromium.org/361253002
* Add the ability for gpu to render dotted lines (dashed line, 0 on interval, ↵Gravatar egdaniel2014-07-02
| | | | | | | | | | | round caps) BUG=skia: R=bsalomon@google.com Author: egdaniel@google.com Review URL: https://codereview.chromium.org/345113003
* Uses optional mutex to guard construction of the singleton, whichGravatar tomhudson2014-07-01
| | | | | | | | | | | | | | | | | initializes the non-threadsafe libfontconfig. Without this change, Skia's parallel path ops test runner crashes 6/10 and hangs 2/10 on startup; with this change, 0/10 problems. BUG=skia:2693 R=mtklein@google.com, bungeman@google.com, reed@google.com Committed: https://skia.googlesource.com/skia/+/df022f5972ae6a2a1d96d15c50eca52cade3abd8 Committed: https://skia.googlesource.com/skia/+/60b08a0adfe73f593af62c8d3f55958438360e1b Author: tomhudson@chromium.org Review URL: https://codereview.chromium.org/355573006
* Remove A8_LCD luminance hack.Gravatar jvanverth2014-07-01
| | | | | | | | | | | It no longer appears to be necessary, and the powf function is slowing down Android text rendering. R=bungeman@google.com, bsalomon@google.com Author: jvanverth@google.com Review URL: https://codereview.chromium.org/337603008
* Revert of Fix race condition in parallel font initialization. ↵Gravatar mtklein2014-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (https://codereview.chromium.org/355573006/) Reason for revert: canaries still slightly broken Original issue's description: > Fix race condition in parallel font initialization. > > Uses a mutex to guard construction of the singleton, which initialies > the non-threadsafe libfontconfig. Without this change, the parallel > path ops test runner crashes 6/10 and hangs 2/10 on startup; with this > change, 0/10 problems. > > BUG=skia:2693 > R=mtklein@google.com,bungeman@google.com > > Committed: https://skia.googlesource.com/skia/+/df022f5972ae6a2a1d96d15c50eca52cade3abd8 > > Committed: https://skia.googlesource.com/skia/+/60b08a0adfe73f593af62c8d3f55958438360e1b R=bungeman@google.com, reed@google.com, tomhudson@google.com, tomhudson@chromium.org TBR=bungeman@google.com, reed@google.com, tomhudson@chromium.org, tomhudson@google.com NOTREECHECKS=true NOTRY=true BUG=skia:2693 Author: mtklein@google.com Review URL: https://codereview.chromium.org/354133004