aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkConvolver.cpp
Commit message (Collapse)AuthorAge
* Add AVX2 version of ConvolveVerticallyGravatar xiangze.zhang2016-12-07
| | | | | | | | | | | | | | | | ConvolveVertically time is reduced about 60% using haswell cpu. Nanobench results: before after bitmap_scale_filter_64_256 611us 302us bitmap_scale_filter_80_90 101us 64.9us bitmap_scale_filter_30_90 82.3us 51.4us bitmap_scale_filter_10_90 73.6us 42.4us BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2526733002 CQ_INCLUDE_TRYBOTS=skia.primary:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD Review-Url: https://codereview.chromium.org/2526733002
* Port convolve functions to SkOptsGravatar xiangze.zhang2016-11-17
| | | | | | | | | | | | This patch moves the C++/SSE2/NEON implementations of convolve functions into the same place and uses SkOpts framework. Also some indentation fix. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2500113004 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Review-Url: https://codereview.chromium.org/2500113004
* Make SSE2/Neon convolution functions not to read extra bytesGravatar xiangze.zhang2016-11-10
| | | | | | | | | | | | | | | | | | | | | | | | | This change makes SSE2/Neon horizontal convolution functions do not read extra pixels past the end of the buffer. So we can remove all the SIMD specific logic in SkConvolver to deal with last couple of rows and also avoid applying padding to convolution filters. Performance impact is small. Nanobench time change: SSE2 NEON bitmap_scale_filter_64_256 1% -2% bitmap_scale_filter_256_64 1% 2% bitmap_scale_filter_90_10 1% -1% bitmap_scale_filter_90_30 1% 0% bitmap_scale_filter_90_80 1% 0% bitmap_scale_filter_90_90 1% 1% bitmap_scale_filter_80_90 0% 0% bitmap_scale_filter_30_90 3% 6% bitmap_scale_filter_10_90 0% 2% BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2481733003 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Review-Url: https://codereview.chromium.org/2481733003
* Refactor resize filter to go fasterGravatar caryclark2016-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Part of this CL improves the speed by using dynamic arrays more effectively. Part uses SIMD and more concise float expressions for speed. Some unused code was deleted. The latter changes are guarded by: SK_SUPPORT_LEGACY_BITMAP_FILTER until this lands and the corresponding layout changes in chrome can be relanded. With the legacy flag defined, no Skia or Chrome test results change. Without the flag defined in Skia, only 0.01% - 0.02% of the pixels change, and then by (1,1,1) in 8888. codereview.chromium.org/1583533002 adds the guard to Chrome. R=reed@google.com BUG=skia:2261 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1563183003 Review URL: https://codereview.chromium.org/1563183003
* Comments Style: s/skbug.com/bug.skia.org/Gravatar halcanary2015-11-07
| | | | | | DOCS_PREVIEW= https://skia.org/?cl=1432503003 Review URL: https://codereview.chromium.org/1432503003
* add hard-coded limit for tmp allocations when HQ image scalingGravatar reed2015-10-01
| | | | | | BUG=528628 Review URL: https://codereview.chromium.org/1368393003
* Style Change: NULL->nullptrGravatar halcanary2015-08-27
| | | | | | DOCS_PREVIEW= https://skia.org/?cl=1316233002 Review URL: https://codereview.chromium.org/1316233002
* Plumb through out_row byte length so we can assert we stay underneath it.Gravatar mtklein2015-06-18
| | | | | | | | Sadly, not asserting for me yet. Can't hurt. BUG=chromium:491660 Review URL: https://codereview.chromium.org/1187173005
* disable autovec on 32 *and* 64 bit builds for horiz. convolveGravatar humper2014-08-28
| | | | | | | | | | | Works around some garbage bottom rows for certain scaled images. Will land a separate GM that demonstrates. BUG=skia: R=mtklein@google.com Author: humper@google.com Review URL: https://codereview.chromium.org/513833003
* 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
* Add noinline for GCC 4.6, which seems to vectorize after inlining.Gravatar mtklein2014-06-25
| | | | | | | | | | | GCC 4.7 and 4.8 don't need this, but we're not building with them so it doesn't hurt. BUG=skia: R=mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/343423003
* Narrow disabled vectorization further to just ConvolveHorizontally.Gravatar mtklein2014-06-25
| | | | | | | | | BUG=skia:2575 R=mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/352883002
* try release onlyGravatar Mike Klein2014-06-25
|
* disable on naclGravatar Mike Klein2014-06-25
|
* Focus disabled optimizations on just BGRAConvolve2D, and only 32-bit.Gravatar mtklein2014-06-25
| | | | | | | | | | | | Last CL accidentally disabled autovectorization on 64-bit builds too. This fixes that. BUG=skia:2575 R=rmistry@google.com, mtklein@google.com Author: mtklein@chromium.org Review URL: https://codereview.chromium.org/353823005
* Support for larger than "signed 32b limit" sized bitmaps in BGRAConvolve2D.Gravatar sugoi2014-06-11
| | | | | | | | | | | The multiplication of 2 signed ints was producing a result larger than what's supported by a single signed int and the memory was accessed out of bounds. Using uint64_t solves the issue. BUG=378491 R=reed@google.com, rmistry@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/323013005
* Revert of Manually set fFilterValues in SkConvolutionFilter1D Gravatar rmistry@google.com2014-03-06
| | | | | | | | | | | | | | | | | | Revert of https://codereview.chromium.org/184323003 Reason for revert: Caused unexpected CompareGM failures- http://108.170.217.252:10117/builders/Test-Win8-ShuttleA-GTX660-x86_64-Debug/builds/461/steps/CompareGMs/logs/stdio http://108.170.217.252:10117/builders/Test-Win7-ShuttleA-HD2000-x86_64-Release/builds/2062/steps/CompareGMs/logs/stdio http://108.170.217.252:10117/builders/Test-ChromeOS-Alex-GMA3150-x86-Release/builds/1400/steps/CompareGMs/logs/stdio TBR= NOTREECHECKS=True NOTRY=True git-svn-id: http://skia.googlecode.com/svn/trunk@13683 2bbb7eff-a529-9590-31e7-b0007b416f81
* Manually set fFilterValues in SkConvolutionFilter1D.Gravatar commit-bot@chromium.org2014-03-06
| | | | | | | | | | | | | | | | Using fFilterValues.reset() or a loop of fFilterValues.push_back() is about 5x slower than calling fFilterValues.resize_back() and then looping using primitive [] and =. This is only going to show up if you apply https://codereview.chromium.org/183763047/, where it yields about 2.5% speedup in the bitmap resize microbenchmarks on a Linux desktop. Ceteris paribus, it should actually improve rasterization time of drawBitmapRectToRect() with a resize by about 5% in Chromium. BUG=skia:2258 R=humper@google.com, tomhudson@google.com Author: tomhudson@chromium.org Review URL: https://codereview.chromium.org/184323003 git-svn-id: http://skia.googlecode.com/svn/trunk@13681 2bbb7eff-a529-9590-31e7-b0007b416f81
* remove fConvolutionProcs from State, and just use it locallyGravatar reed@google.com2013-09-05
| | | | | | | | | BUG= R=humper@google.com Review URL: https://codereview.chromium.org/23796005 git-svn-id: http://skia.googlecode.com/svn/trunk@11118 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
* remove unused functionGravatar humper@google.com2013-07-19
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10208 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