aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/opts
Commit message (Collapse)AuthorAge
* Cleanup the ARM blitrow optimizationsGravatar djsollen@google.com2013-08-09
| | | | | | | | R=mtklein@google.com Review URL: https://codereview.chromium.org/22229002 git-svn-id: http://skia.googlecode.com/svn/trunk@10652 2bbb7eff-a529-9590-31e7-b0007b416f81
* Minor sk_memset{16|32}_SSE2 optimization.Gravatar commit-bot@chromium.org2013-08-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using explicitly indexed references allows some compilers to generate more efficient loops. For gcc 4.6.3: 613c18: 83 ea 10 sub $0x10,%edx 613c1b: 66 0f 7f 07 movdqa %xmm0,(%rdi) 613c1f: 66 0f 7f 47 10 movdqa %xmm0,0x10(%rdi) 613c24: 66 0f 7f 47 20 movdqa %xmm0,0x20(%rdi) 613c29: 66 0f 7f 47 30 movdqa %xmm0,0x30(%rdi) 613c2e: 48 83 c7 40 add $0x40,%rdi 613c32: 83 fa 0f cmp $0xf,%edx 613c35: 7f e1 jg 613c18 <_Z16sk_memset32_SSE2Pjji+0x38> vs. previous: 613c18: 83 ea 10 sub $0x10,%edx 613c1b: 66 0f 7f 07 movdqa %xmm0,(%rdi) 613c1f: 66 0f 7f 47 10 movdqa %xmm0,0x10(%rdi) 613c24: 66 0f 7f 47 20 movdqa %xmm0,0x20(%rdi) 613c29: 48 83 c7 40 add $0x40,%rdi 613c2d: 83 fa 0f cmp $0xf,%edx 613c30: 66 0f 7f 47 f0 movdqa %xmm0,-0x10(%rdi) 613c35: 7f e1 jg 613c18 <_Z16sk_memset32_SSE2Pjji+0x38> This yields a 0.2% - 1% improvement with the memset micro benchmarks, presumably due to avoiding a stall on the next store after the %rdi increment. R=reed@google.com, senorblanco@chromium.org Author: fmalita@chromium.org Review URL: https://chromiumcodereview.appspot.com/21703003 git-svn-id: http://skia.googlecode.com/svn/trunk@10545 2bbb7eff-a529-9590-31e7-b0007b416f81
* ARM Skia NEON patches - 14 - S32A_BlendGravatar commit-bot@chromium.org2013-08-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Blitrow32: S32A_Blend new NEON version Adding a NEON version of S32A_Blend_BlitRow32. Here are the benchmark results: +-------+--------------------------+--------------------------+ | | Speedup vs. C | Speedup vs. ARM asm | | count +------------+-------------+------------+-------------+ | | Cortex A-9 | Cortex A-15 | Cortex A-9 | Cortex A-15 | +-------+------------+-------------+------------+-------------+ | 1 | +8,5% | +18,5% | +0.9% | +2,9% | +-------+------------+-------------+------------+-------------+ | 2 | +65,6% | +94% | +70,3% | +80% | +-------+------------+-------------+------------+-------------+ | 4 | +42,4% | +87,8% | +56,8% | +84,4% | +-------+------------+-------------+------------+-------------+ | 8 | +30% | +90% | +49,9% | +82,7% | +-------+------------+-------------+------------+-------------+ | 16 | +23,1% | +95,4% | +46,6% | +87,6% | +-------+------------+-------------+------------+-------------+ | 64 | +23,1% | +95,7% | +46,1% | +89,4% | +-------+------------+-------------+------------+-------------+ | 256 | +35,5% | +122% | +53,6% | +99,2% | +-------+------------+-------------+------------+-------------+ | 1024 | +61,8% | +101% | +64,2% | +91,2% | +-------+------------+-------------+------------+-------------+ BUG= R=djsollen@google.com Author: kevin.petit.arm@gmail.com Review URL: https://chromiumcodereview.appspot.com/18614010 git-svn-id: http://skia.googlecode.com/svn/trunk@10480 2bbb7eff-a529-9590-31e7-b0007b416f81
* Enable runtime checks for SSSE3 on x86 on Android.Gravatar mtklein@google.com2013-07-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | $ compare-android.sh bench --match bitmap_ --repeat 30 master -> ssse3 N=30 p=0.001000 (corrected to 0.000033) sig? speedup bench n -1.16% bitmap_scale_filter_256_64 y -0.72% bitmap_8888_A_scale_bicubic y -0.21% bitmap_index8_A n -0.00% bitmap_565 n -0.00% bitmap_scale_filter_90_80 n 0.03% bitmap_8888_A_source_transparent y 0.06% bitmap_index8 y 0.30% bitmap_8888_A_source_stripes_two n 0.34% bitmap_scale_filter_80_90 y 0.42% bitmap_8888_A y 0.44% bitmap_8888_A_source_opaque n 0.53% bitmap_scale_filter_90_10 y 0.71% bitmap_8888_A_source_stripes_three y 0.91% bitmap_8888_A_scale_rotate_bicubic y 1.04% bitmap_8888_update n 1.19% bitmap_scale_filter_10_90 n 1.39% bitmap_scale_filter_90_90 y 1.77% bitmap_8888_update_volatile y 1.89% bitmap_8888 y 2.37% bitmap_scale_filter_30_90 y 9.57% bitmap_scale_filter_64_256 n 17.86% bitmap_scale_filter_90_30 y 25.40% bitmap_8888_A_scale_rotate_bilerp y 27.19% bitmap_8888_scale_rotate_bilerp y 27.23% bitmap_8888_update_scale_rotate_bilerp y 27.29% bitmap_8888_update_volatile_scale_rotate_bilerp y 55.08% bitmap_8888_A_scale_bilerp y 58.75% bitmap_8888_update_volatile_scale_bilerp y 58.90% bitmap_8888_scale_bilerp y 58.92% bitmap_8888_update_scale_bilerp Overall speedup: 10.52% BUG=skia:1111 R=djsollen@google.com Review URL: https://codereview.chromium.org/21203005 git-svn-id: http://skia.googlecode.com/svn/trunk@10474 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-07-31
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10449 2bbb7eff-a529-9590-31e7-b0007b416f81
* add scalar stubs for neon functions to give arm guys a place to workGravatar commit-bot@chromium.org2013-07-30
| | | | | | | | | | | BUG= R=djsollen@google.com, reed@google.com Author: humper@google.com Review URL: https://chromiumcodereview.appspot.com/20749003 git-svn-id: http://skia.googlecode.com/svn/trunk@10431 2bbb7eff-a529-9590-31e7-b0007b416f81
* include SkPaint.hGravatar reed@google.com2013-07-22
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10244 2bbb7eff-a529-9590-31e7-b0007b416f81
* copy/paste error. don't use s.Gravatar reed@google.com2013-07-22
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10243 2bbb7eff-a529-9590-31e7-b0007b416f81
* rename fFilterQuality to fFilterLevelGravatar reed@google.com2013-07-22
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10241 2bbb7eff-a529-9590-31e7-b0007b416f81
* stop using bitmap-filter flags outside of paint itself, as a step towards ↵Gravatar reed@google.com2013-07-22
| | | | | | | | | | really changing them into an enum BUG= Review URL: https://codereview.chromium.org/19825002 git-svn-id: http://skia.googlecode.com/svn/trunk@10240 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-07-20
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10223 2bbb7eff-a529-9590-31e7-b0007b416f81
* use SK_ScalarPI, and fix ARM buildGravatar humper@google.com2013-07-19
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10212 2bbb7eff-a529-9590-31e7-b0007b416f81
* scale --> convolution typoGravatar humper@google.com2013-07-19
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10210 2bbb7eff-a529-9590-31e7-b0007b416f81
* The image resampling code has been transplanted from Chrome; it's incredibly ↵Gravatar humper@google.com2013-07-19
| | | | | | | | | | | | | | | fast. We've tested this CL plumbed into Chrome and done benchmarking with excellent results. This CL can land independent of any Chrome changes; it's completely internal to skia. BUG= R=reed@google.com Review URL: https://codereview.chromium.org/19335002 git-svn-id: http://skia.googlecode.com/svn/trunk@10206 2bbb7eff-a529-9590-31e7-b0007b416f81
* ARM Skia NEON patches - 01 - Simple fixesGravatar commit-bot@chromium.org2013-07-15
| | | | | | | | | | | | | | | | | | | | | | | | This series contains a few fairly non-controversial fixes. Misc: remove dead references to neon 4444 functions Misc: avoid the double _neon_neon suffix in the clamp matrix functions. MAKENAME already adds the _neon suffix Misc: a few stupid / obvious fixes BUG= R=djsollen@google.com Author: kevin.petit.arm@gmail.com Review URL: https://chromiumcodereview.appspot.com/18666004 git-svn-id: http://skia.googlecode.com/svn/trunk@10072 2bbb7eff-a529-9590-31e7-b0007b416f81
* fix trivial matrix computationGravatar humper@google.com2013-07-14
| | | | | | | | | | | | | | Revert "Reverted 10056-10059" This reverts commit bab4ebcaa7270c3b866a8e10917c39b055ebd51a. Fix broken GM test, reintroduce image scaling. BUG= Review URL: https://codereview.chromium.org/18721006 git-svn-id: http://skia.googlecode.com/svn/trunk@10066 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reverted 10056-10059Gravatar robertphillips@google.com2013-07-13
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10060 2bbb7eff-a529-9590-31e7-b0007b416f81
* Working plumb of image scaling:Gravatar humper@google.com2013-07-12
| | | | | | | | | | | | | | | | 1) always generate mipmaps if we detect that we are downsampling. 2) pre-scale the image if we detect that we are upsampling (currently valid for scale+translate only) 3) A few miscellaneous bug fixes related to image scaling. Still need SSE/Neon versions of these image scalers. BUG= R=bsalomon@google.com, robertphillips@google.com Review URL: https://codereview.chromium.org/18978014 git-svn-id: http://skia.googlecode.com/svn/trunk@10056 2bbb7eff-a529-9590-31e7-b0007b416f81
* ARM Skia NEON patches - 13 - S32A_OpaqueGravatar commit-bot@chromium.org2013-07-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Blitrow32: S32A_Opaque code cleaning and speed improvement - the old way of calculating alpha doesn't seem to be used anymore, so remove the remaining code - adding prefetching allows to improve performance greatly in some cases at the expense of a little trade-off: +-------+-----------+------------+ | count | Cortex-A9 | Cortex-A15 | +-------+-----------+------------+ | 1,2 | 0 | 0 | +-------+-----------+------------+ | 4 | 0 | -3% | +-------+-----------+------------+ | 8 | 0 | -4% | +-------+-----------+------------+ | 16 | 0 | -5% | +-------+-----------+------------+ | 64 | +14% | 0 | +-------+-----------+------------+ | 256 | +14% | +12% | +-------+-----------+------------+ | 1024 | +115% | +15% | +-------+-----------+------------+ BUG= R=djsollen@google.com Author: kevin.petit.arm@gmail.com Review URL: https://chromiumcodereview.appspot.com/18459008 git-svn-id: http://skia.googlecode.com/svn/trunk@10026 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-07-11
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@9992 2bbb7eff-a529-9590-31e7-b0007b416f81
* ARM Skia NEON patches - 05 - CleaningGravatar commit-bot@chromium.org2013-07-10
| | | | | | | | | | | | | | | | | Misc: move definition of empty SkBlitRow::ColorRectProc For the sake of consistency, the empty SkBlitRow::ColorRectProc should be defined in SkBlitRow_opts_none.cpp rather than SkUtils_opts_none.cpp BUG= R=djsollen@google.com, reed@google.com, tomhudson@google.com Author: kevin.petit.arm@gmail.com Review URL: https://chromiumcodereview.appspot.com/18314005 git-svn-id: http://skia.googlecode.com/svn/trunk@9953 2bbb7eff-a529-9590-31e7-b0007b416f81
* ARM Skia NEON patches - 02 - Tune filter clobber listGravatar commit-bot@chromium.org2013-07-10
| | | | | | | | | | | | | | | Misc: reduce clobber list in SkBitmapProcState_filter_neon.h This may allow the compiler to do a better job BUG= R=djsollen@google.com, tomhudson@google.com Author: kevin.petit.arm@gmail.com Review URL: https://chromiumcodereview.appspot.com/18996003 git-svn-id: http://skia.googlecode.com/svn/trunk@9952 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-07-10
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@9948 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix Win7 compiler errors/warnings for r9945Gravatar robertphillips@google.com2013-07-09
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@9947 2bbb7eff-a529-9590-31e7-b0007b416f81
* New bitmap filter checkin; this time with less build breakageGravatar humper@google.com2013-07-09
| | | | | | | | BUG= Review URL: https://codereview.chromium.org/18942002 git-svn-id: http://skia.googlecode.com/svn/trunk@9944 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "More general image filter interface; tested implementation of ↵Gravatar humper@google.com2013-07-09
| | | | | | | | standalone" This reverts commit 4df3e8b079e019af5f60c13e7e6ec6589663962a. git-svn-id: http://skia.googlecode.com/svn/trunk@9937 2bbb7eff-a529-9590-31e7-b0007b416f81
* More general image filter interface; tested implementation of standaloneGravatar humper@google.com2013-07-09
| | | | | | | | | | | | image scaler (not yet plumbed). High quality downsampler. Fast SSE resampler. BUG= R=reed@google.com Review URL: https://codereview.chromium.org/17381008 git-svn-id: http://skia.googlecode.com/svn/trunk@9936 2bbb7eff-a529-9590-31e7-b0007b416f81
* Commented SSE blend functions and cleaned-up variable naming.Gravatar commit-bot@chromium.org2013-07-02
| | | | | | | | | | R=senorblanco@chromium.org, alokp@chromium.org, reed@google.com, bungeman@google.com Author: ernstm@chromium.org Review URL: https://chromiumcodereview.appspot.com/17847010 git-svn-id: http://skia.googlecode.com/svn/trunk@9870 2bbb7eff-a529-9590-31e7-b0007b416f81
* remove dead references to PlatformProcs4444Gravatar reed@google.com2013-06-21
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@9728 2bbb7eff-a529-9590-31e7-b0007b416f81
* remove dst/rendertarget support for kARGB_4444_ConfigGravatar reed@google.com2013-06-21
| | | | | | | | BUG= Review URL: https://codereview.chromium.org/17335008 git-svn-id: http://skia.googlecode.com/svn/trunk@9727 2bbb7eff-a529-9590-31e7-b0007b416f81
* Partial reapply of r5364 minus the non-neon code path.Gravatar djsollen@google.com2013-04-09
| | | | | | | | See https://codereview.appspot.com/6465075 for a more detailed description of the contents of this CL. Review URL: https://codereview.chromium.org/13060004 git-svn-id: http://skia.googlecode.com/svn/trunk@8579 2bbb7eff-a529-9590-31e7-b0007b416f81
* Enable init'ed but unused var warning on windows for closer parity with ↵Gravatar bsalomon@google.com2013-03-21
| | | | | | | | mac/linux warnings. Review URL: https://codereview.chromium.org/12536008 git-svn-id: http://skia.googlecode.com/svn/trunk@8307 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix a bunch of warnings, mainly around rowBytes.Gravatar scroggo@google.com2013-02-25
| | | | | | | | | | | My recent change changed the way SkBitmap::fRowBytes is stored, and parameter/return values referring to rowBytes were changed to type size_t. Change the storage back, and eliminate warnings resulting from returning a size_t. Review URL: https://codereview.appspot.com/7396059 git-svn-id: http://skia.googlecode.com/svn/trunk@7855 2bbb7eff-a529-9590-31e7-b0007b416f81
* mirror of https://codereview.appspot.com/7312060/Gravatar reed@google.com2013-02-11
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7694 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix errors when compiling with -Wall -Werror on Android.Gravatar djsollen@google.com2013-02-07
| | | | | | | | This CL also turns those features on by default on Android Review URL: https://codereview.appspot.com/7313049 git-svn-id: http://skia.googlecode.com/svn/trunk@7645 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Skia_Periodic_House_KeepingGravatar skia.committer@gmail.com2013-01-26
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@7406 2bbb7eff-a529-9590-31e7-b0007b416f81
* eliminate all warnings in non-thirdparty code on macGravatar humper@google.com2013-01-07
| | | | | | | | | | | | | | | | Most of these issues were due to functions whose definitions appear in header files; I changed those functions to be 'static inline' instead of just 'static' or 'inline', which kills the warning for such functions. Other functions that were static or anonymous-namespaced but were unused in cpp files were probably called at some point but are no longer; someone who knows more than I do should probably scrub all the functions I either deleted or #if 0'ed out and make sure that the right thing is happening here. Lots of unused variables removed, and one nasty const issue handled. There remains a single warning in thirdparty/externals/cityhash/src/city.cc on line 146 related to a signed/unsigned mismatch. I don't know if we have control over this library so I didn't fix this one, but perhaps someone could do something about that one. BUG= Review URL: https://codereview.appspot.com/7067044 git-svn-id: http://skia.googlecode.com/svn/trunk@7051 2bbb7eff-a529-9590-31e7-b0007b416f81
* first cut at making iOS workGravatar caryclark@google.com2012-09-20
| | | | | | | | | | | | | Replace __arm__ with SK_CPU_ARM add support for iOS simulator and device fix const warning in iOSSampleApp update gyp files https://code.google.com/p/skia/issues/detail?id=900 tracks fixing missing arm assembly Review URL: https://codereview.appspot.com/6552045 git-svn-id: http://skia.googlecode.com/svn/trunk@5606 2bbb7eff-a529-9590-31e7-b0007b416f81
* Upstream clank: fix build on platforms (Clang/ARM) that don't support 'optimize'Gravatar tomhudson@google.com2012-09-04
| | | | | | | | http://codereview.appspot.com/6496082/ git-svn-id: http://skia.googlecode.com/svn/trunk@5385 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reverting r5364 (Update ARM and NEON optimizations for S32A_Opaque_BlitRow32)Gravatar robertphillips@google.com2012-09-04
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@5378 2bbb7eff-a529-9590-31e7-b0007b416f81
* Update ARM and NEON optimizations for S32A_Opaque_BlitRow32.Gravatar djsollen@google.com2012-08-31
| | | | | | | | These patches replace those written by ARM with ones provided by NVidia. Review URL: https://codereview.appspot.com/6465075 git-svn-id: http://skia.googlecode.com/svn/trunk@5364 2bbb7eff-a529-9590-31e7-b0007b416f81
* The UBFX instruction isn't available on ARMv6; use LSL/LSR or UXTB.Gravatar george@mozilla.com2012-08-30
| | | | | | Review URL: https://codereview.appspot.com/6476072 git-svn-id: http://skia.googlecode.com/svn/trunk@5349 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix Clang build on Android.Gravatar digit@google.com2012-08-28
| | | | | | | | | The optimize attribute is not supported with Clang/ARM r161757. This warning, turned into an error, is emitted by -Wattribute (implicitly set). Review URL: https://codereview.appspot.com/6489045 git-svn-id: http://skia.googlecode.com/svn/trunk@5316 2bbb7eff-a529-9590-31e7-b0007b416f81
* Result of running tools/sanitize_source_files.py (which was added in ↵Gravatar rmistry@google.com2012-08-23
| | | | | | | | | https://codereview.appspot.com/6465078/) This CL is part I of IV (I broke down the 1280 files into 4 CLs). Review URL: https://codereview.appspot.com/6485054 git-svn-id: http://skia.googlecode.com/svn/trunk@5262 2bbb7eff-a529-9590-31e7-b0007b416f81
* Force opaque in SkBlendLCD16Opaque_SSE2 to match SkBlendLCD16.Gravatar bungeman@google.com2012-08-21
| | | | | | | https://codereview.appspot.com/6460123/ git-svn-id: http://skia.googlecode.com/svn/trunk@5218 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add check for EDSP to the 565 opaque blitter.Gravatar djsollen@google.com2012-08-21
| | | | | | Review URL: https://codereview.appspot.com/6464082 git-svn-id: http://skia.googlecode.com/svn/trunk@5212 2bbb7eff-a529-9590-31e7-b0007b416f81
* Upstream ARM 565 optimizations from AOSP.Gravatar djsollen@google.com2012-08-21
| | | | | | Review URL: https://codereview.appspot.com/6461101 git-svn-id: http://skia.googlecode.com/svn/trunk@5211 2bbb7eff-a529-9590-31e7-b0007b416f81
* Clean up most clang warnings outside animator/Gravatar tomhudson@google.com2012-08-14
| | | | | | | | http://codereview.appspot.com/6464058/ git-svn-id: http://skia.googlecode.com/svn/trunk@5079 2bbb7eff-a529-9590-31e7-b0007b416f81
* arm: dynamic NEON support for SkBitmapProcState functions.Gravatar digit@google.com2012-08-13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch does the following: - Move the NEON-specific code from src/core/SkBitmapProcState_filter.h to src/opts/SkBitmapProcState_filter_neon.h - Implement the NEON-specific functions in the new source file src/opts/SkBitmapProcState_opts_arm_neon.cpp, added to the "opts_neon" static library target. All functions now use the _neon suffix, even in full-NEON builds. - Move most of the content of src/core/SkBitmapProcState.cpp to a new header: src/core/SkBitmapProcState_procs.h This header is included by two source files: src/core/SkBitmapProcState.cpp, to define the regular functions. src/opts/SkBitmapProcState_opts_arm_neon.cpp to define NEON ones. This is to deal with the fact that all NEON functions now use the _neon suffix, even in SK_ARM_NEON_IS_ALWAYS mode, and to be able to include the same header twice in the SK_ARM_NEON_IS_DYNAMIC case. Review URL: https://codereview.appspot.com/6449117 git-svn-id: http://skia.googlecode.com/svn/trunk@5055 2bbb7eff-a529-9590-31e7-b0007b416f81
* arm: dynamic NEON support for SkBlitRow_opts_arm.cppGravatar digit@google.com2012-08-08
| | | | | | | | | This patch moves all NEON-specific code from the source src/opts/SkBlitRow_opts_arm.cpp into a new file that is built as part of the 'opts_arm_neon' static library. Review URL: https://codereview.appspot.com/6449110 git-svn-id: http://skia.googlecode.com/svn/trunk@5016 2bbb7eff-a529-9590-31e7-b0007b416f81