History log of /external/skia/src/core/SkConvolver.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
4adac2e32a99b9e266b41b356c7bbc2ea2c8dd31 08-Dec-2016 xiangze.zhang <xiangze.zhang@intel.com> Add AVX2 version of ConvolveVertically

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
/external/skia/src/core/SkConvolver.cpp
d2265e537c8015f8115d7b5b7f6de970aa688172 18-Nov-2016 xiangze.zhang <xiangze.zhang@intel.com> Port convolve functions to SkOpts

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
/external/skia/src/core/SkConvolver.cpp
3f321351c9a79f3cc797fa2ef6d69db04415cf5b 10-Nov-2016 xiangze.zhang <xiangze.zhang@intel.com> Make SSE2/Neon convolution functions not to read extra bytes

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
/external/skia/src/core/SkConvolver.cpp
368342ccb5b88568974f66d1a36bbec667efcc4e 12-Jan-2016 caryclark <caryclark@google.com> Refactor resize filter to go faster

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
/external/skia/src/core/SkConvolver.cpp
6950de6c4166fabb35e6c756fc009e0cf1c47819 07-Nov-2015 halcanary <halcanary@google.com> Comments Style: s/skbug.com/bug.skia.org/
DOCS_PREVIEW= https://skia.org/?cl=1432503003

Review URL: https://codereview.chromium.org/1432503003
/external/skia/src/core/SkConvolver.cpp
d1d4460547bcd76db7142cf9b6370dc952d459fc 01-Oct-2015 reed <reed@google.com> add hard-coded limit for tmp allocations when HQ image scaling

BUG=528628

Review URL: https://codereview.chromium.org/1368393003
/external/skia/src/core/SkConvolver.cpp
96fcdcc219d2a0d3579719b84b28bede76efba64 27-Aug-2015 halcanary <halcanary@google.com> Style Change: NULL->nullptr
DOCS_PREVIEW= https://skia.org/?cl=1316233002

Review URL: https://codereview.chromium.org/1316233002
/external/skia/src/core/SkConvolver.cpp
cd08effd005225915c7516883f658f21dbd82292 18-Jun-2015 mtklein <mtklein@chromium.org> Plumb through out_row byte length so we can assert we stay underneath it.

Sadly, not asserting for me yet. Can't hurt.

BUG=chromium:491660

Review URL: https://codereview.chromium.org/1187173005
/external/skia/src/core/SkConvolver.cpp
4e4b935d526f5720b3f15c4742eef84d49ebb984 28-Aug-2014 humper <humper@google.com> disable autovec on 32 *and* 64 bit builds for horiz. convolve

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
/external/skia/src/core/SkConvolver.cpp
c197c8a47eb9cf09b389f4dd5d235510feec18cb 03-Jul-2014 sugoi <sugoi@chromium.org> Adding 64 bit checks

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
/external/skia/src/core/SkConvolver.cpp
b726df472bb996aaab9ea0e62568208599385a1c 25-Jun-2014 mtklein <mtklein@chromium.org> Add noinline for GCC 4.6, which seems to vectorize after inlining.

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
/external/skia/src/core/SkConvolver.cpp
0cf27818e0259b08b155cae48a429ad681230348 25-Jun-2014 mtklein <mtklein@chromium.org> Narrow disabled vectorization further to just ConvolveHorizontally.

BUG=skia:2575
R=mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/352883002
/external/skia/src/core/SkConvolver.cpp
4809e4d796a97d407970e224f1519b41638ab897 25-Jun-2014 Mike Klein <mtklein@google.com> try release only
/external/skia/src/core/SkConvolver.cpp
729c6f0f291ac8e4f73f4498ba730000ba438b48 25-Jun-2014 Mike Klein <mtklein@gmail.com> disable on nacl
/external/skia/src/core/SkConvolver.cpp
2b8a3b8f26658e2933234e97d5d2c0b58935baf4 25-Jun-2014 mtklein <mtklein@chromium.org> Focus disabled optimizations on just BGRAConvolve2D, and only 32-bit.

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
/external/skia/src/core/SkConvolver.cpp
35fcd15d0598bca6a265100ace5d10a0d992cf9c 11-Jun-2014 sugoi <sugoi@chromium.org> Support for larger than "signed 32b limit" sized bitmaps in BGRAConvolve2D.

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
/external/skia/src/core/SkConvolver.cpp
d7a9fcc61f2c513064f67b125c0b2eb918768bb7 06-Mar-2014 rmistry@google.com <rmistry@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> Revert of Manually set fFilterValues in SkConvolutionFilter1D

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
/external/skia/src/core/SkConvolver.cpp
5b70e7e2df94410e7e3ceeb6e54f4ebe72b87b7d 06-Mar-2014 commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> Manually set fFilterValues in SkConvolutionFilter1D.

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
/external/skia/src/core/SkConvolver.cpp
fed04b34315ed72dbb20e630908638d1c829c760 05-Sep-2013 reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> remove fConvolutionProcs from State, and just use it locally

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
/external/skia/src/core/SkConvolver.cpp
1f3c73825b8a1752abc6b74fbce978a430de6473 20-Jul-2013 skia.committer@gmail.com <skia.committer@gmail.com@2bbb7eff-a529-9590-31e7-b0007b416f81> Sanitizing source files in Housekeeper-Nightly

git-svn-id: http://skia.googlecode.com/svn/trunk@10223 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/src/core/SkConvolver.cpp
ab56cdabbd870ad015f1eb99a03585c0b212b952 19-Jul-2013 humper@google.com <humper@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> remove unused function

git-svn-id: http://skia.googlecode.com/svn/trunk@10208 2bbb7eff-a529-9590-31e7-b0007b416f81
/external/skia/src/core/SkConvolver.cpp
138ebc3e4061cf533ea2f7f3717239670fdc6e43 19-Jul-2013 humper@google.com <humper@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> The image resampling code has been transplanted from Chrome; it's incredibly 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
/external/skia/src/core/SkConvolver.cpp