Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(891)

Issue 6334070: SIMD implementation of Convolver for Lanczos filter etc. (Closed)

Created:
9 years, 10 months ago by jiesun
Modified:
9 years, 9 months ago
Reviewers:
fbarchard, evannier, brettw
CC:
chromium-reviews, vrk (LEFT CHROMIUM), sjl, ddorwin+watch_chromium.org, Alpha Left Google, acolwell GONE FROM CHROMIUM, annacc, pam+watch_chromium.org, awong, davemoore+watch_chromium.org, scherkus (not reviewing), darin-cc_chromium.org, Paweł Hajdan Jr.
Visibility:
Public.

Description

SIMD implementation of Convolver for Lanczos filter etc. replace current convolver function (horizontal/vertical) with SSE2 intrinsic version. Performance is not tuned to the optimal carefully in this patch. but it still should beat C version easily. BUG=62820 TEST=unittest. and image_operation_bench. Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=77527

Patch Set 1 : first #

Patch Set 2 : second #

Patch Set 3 : third #

Patch Set 4 : fourth #

Patch Set 5 : windows compile #

Patch Set 6 : sixth #

Patch Set 7 : pad filter values #

Patch Set 8 : line buffer padding #

Patch Set 9 : algined row buffer #

Patch Set 10 : remove test #

Patch Set 11 : cpuid #

Patch Set 12 : try #

Patch Set 13 : fix win bug #

Patch Set 14 : try to fix win #

Total comments: 40

Patch Set 15 : rebase and style #

Patch Set 16 : refactoring #

Patch Set 17 : split for unittest #

Patch Set 18 : unittest #

Patch Set 19 : unittest #

Patch Set 20 : fix win #

Patch Set 21 : disable performance check #

Patch Set 22 : lint #

Patch Set 23 : lint2 #

Patch Set 24 : lint3 #

Patch Set 25 : use set1 instead of set #

Patch Set 26 : precomputed maskwq #

Patch Set 27 : oops #

Total comments: 14

Patch Set 28 : review issue/adding comments. #

Total comments: 16

Patch Set 29 : review 2 #

Patch Set 30 : resolve 32 bits posix system had -msse2 disabled when build chrome. merge two versions #

Total comments: 13

Patch Set 31 : brett's review #

Total comments: 2

Patch Set 32 : ifdefs #

Patch Set 33 : reduce duplicated ifdef #

Patch Set 34 : typo #

Unified diffs Side-by-side diffs Delta from patch set Stats (+661 lines, -27 lines) Patch
M skia/ext/convolver.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 3 chunks +21 lines, -2 lines 0 comments Download
M skia/ext/convolver.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 6 chunks +518 lines, -21 lines 0 comments Download
M skia/ext/convolver_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 4 chunks +116 lines, -2 lines 0 comments Download
M skia/ext/image_operations.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 4 chunks +6 lines, -2 lines 0 comments Download

Messages

Total messages: 18 (0 generated)
evannier
Jie, I took a quick look and did not look deeply at the intrinsics. Most ...
9 years, 10 months ago (2011-02-14 23:45:13 UTC) #1
jiesun
thanks for review! I am going to address all the concerns. also I am going ...
9 years, 10 months ago (2011-02-15 00:19:22 UTC) #2
fbarchard
intrinsics are problematic in general, for 32 bit builds. compile and disassemble to see if ...
9 years, 10 months ago (2011-02-15 23:16:45 UTC) #3
jiesun
I am going to defer any optimization to next patches. but suggestion on optimization are ...
9 years, 10 months ago (2011-02-17 20:17:58 UTC) #4
brettw
Mostly I'd like a lot more comments. Most people (including me) don't know what the ...
9 years, 10 months ago (2011-02-21 04:45:45 UTC) #5
jiesun
Please have another look. More comments are added in this patch for readabilities.. unfortunately the ...
9 years, 10 months ago (2011-02-22 21:37:02 UTC) #6
brettw
I get the SSE stuff much better now, thanks for the great comments. I don't ...
9 years, 10 months ago (2011-02-25 06:43:02 UTC) #7
jiesun
thanks for review. could you take a look the "patch 2" above, instead of use ...
9 years, 10 months ago (2011-02-25 20:49:55 UTC) #8
brettw
Looking at it, I think I like the approach in patch 2 better than the ...
9 years, 10 months ago (2011-02-25 20:54:54 UTC) #9
jiesun
please have another look then. use __SSE2__ to detect if -msse2 is specified during build.
9 years, 9 months ago (2011-03-01 00:14:34 UTC) #10
fbarchard
The expression I use in chromium is #if defined(__SSE2__) || defined(ARCH_CPU_X86_64) || _M_IX86_FP==2 On Mon, ...
9 years, 9 months ago (2011-03-01 01:33:14 UTC) #11
fbarchard
http://codereview.chromium.org/6334070/diff/51005/skia/ext/convolver.cc File skia/ext/convolver.cc (right): http://codereview.chromium.org/6334070/diff/51005/skia/ext/convolver.cc#newcode11 skia/ext/convolver.cc:11: #if defined(OS_WIN) || defined(__SSE2__) I guess this is ok. ...
9 years, 9 months ago (2011-03-01 17:14:30 UTC) #12
brettw
LGTM, just some style nits. http://codereview.chromium.org/6334070/diff/51005/skia/ext/convolver.cc File skia/ext/convolver.cc (right): http://codereview.chromium.org/6334070/diff/51005/skia/ext/convolver.cc#newcode736 skia/ext/convolver.cc:736: // even runtime support ...
9 years, 9 months ago (2011-03-03 17:56:19 UTC) #13
jiesun
Do I need a final LGTM. Frank: are you insisting that ifdefs? http://codereview.chromium.org/6334070/diff/38015/skia/ext/convolver.cc File skia/ext/convolver.cc ...
9 years, 9 months ago (2011-03-07 18:57:15 UTC) #14
fbarchard
http://codereview.chromium.org/6334070/diff/59001/skia/ext/convolver.cc File skia/ext/convolver.cc (right): http://codereview.chromium.org/6334070/diff/59001/skia/ext/convolver.cc#newcode12 skia/ext/convolver.cc:12: #include <emmintrin.h> // ARCH_CPU_X86_FAMILY was defined in build/config.h This ...
9 years, 9 months ago (2011-03-07 20:38:10 UTC) #15
jiesun
I had ifdef already change to conform other place in chromium projects. is this okay ...
9 years, 9 months ago (2011-03-07 20:55:24 UTC) #16
brettw
On Mon, Mar 7, 2011 at 10:57 AM, <jiesun@chromium.org> wrote: > Do I need a ...
9 years, 9 months ago (2011-03-07 21:39:33 UTC) #17
fbarchard
9 years, 9 months ago (2011-03-08 18:52:27 UTC) #18
LGTM
This code should at least build/run.  Likely the SSE2 will be disabled on
Chrome, since the SSE2 is not enabled.  So a followup should be done to look
into that... enabling SSE2 for this module, in the gyp, using inline or yasm.

Powered by Google App Engine
This is Rietveld 408576698