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

Side by Side Diff: gyp/opts.gyp

Issue 61643011: SSE2 implementation of RGBA box blurs. This yields ~2X perf improvement on (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Fixes from review comments Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « bench/BlurImageFilterBench.cpp ('k') | src/effects/SkBlurImageFilter.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 { 1 {
2 'targets': [ 2 'targets': [
3 # Due to an unfortunate intersection of lameness between gcc and gyp, 3 # Due to an unfortunate intersection of lameness between gcc and gyp,
4 # we have to build the *_SSE2.cpp files in a separate target. The 4 # we have to build the *_SSE2.cpp files in a separate target. The
5 # gcc lameness is that, in order to compile SSE2 intrinsics code, it 5 # gcc lameness is that, in order to compile SSE2 intrinsics code, it
6 # must be passed the -msse2 flag. However, with this flag, it may 6 # must be passed the -msse2 flag. However, with this flag, it may
7 # emit SSE2 instructions even for scalar code, such as the CPUID 7 # emit SSE2 instructions even for scalar code, such as the CPUID
8 # test used to test for the presence of SSE2. So that, and all other 8 # test used to test for the presence of SSE2. So that, and all other
9 # code must be compiled *without* -msse2. The gyp lameness is that it 9 # code must be compiled *without* -msse2. The gyp lameness is that it
10 # does not allow file-specific CFLAGS, so we must create this extra 10 # does not allow file-specific CFLAGS, so we must create this extra
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 ], 44 ],
45 'dependencies': [ 45 'dependencies': [
46 'opts_ssse3', 46 'opts_ssse3',
47 ], 47 ],
48 'sources': [ 48 'sources': [
49 '../src/opts/opts_check_SSE2.cpp', 49 '../src/opts/opts_check_SSE2.cpp',
50 '../src/opts/SkBitmapProcState_opts_SSE2.cpp', 50 '../src/opts/SkBitmapProcState_opts_SSE2.cpp',
51 '../src/opts/SkBitmapFilter_opts_SSE2.cpp', 51 '../src/opts/SkBitmapFilter_opts_SSE2.cpp',
52 '../src/opts/SkBlitRow_opts_SSE2.cpp', 52 '../src/opts/SkBlitRow_opts_SSE2.cpp',
53 '../src/opts/SkBlitRect_opts_SSE2.cpp', 53 '../src/opts/SkBlitRect_opts_SSE2.cpp',
54 '../src/opts/SkBlurImage_opts_SSE2.cpp',
54 '../src/opts/SkMorphology_opts_SSE2.cpp', 55 '../src/opts/SkMorphology_opts_SSE2.cpp',
55 '../src/opts/SkUtils_opts_SSE2.cpp', 56 '../src/opts/SkUtils_opts_SSE2.cpp',
56 '../src/opts/SkXfermode_opts_none.cpp', 57 '../src/opts/SkXfermode_opts_none.cpp',
57 ], 58 ],
58 }], 59 }],
59 [ 'skia_arch_type == "arm" and arm_version >= 7', { 60 [ 'skia_arch_type == "arm" and arm_version >= 7', {
60 # The assembly uses the frame pointer register (r7 in Thumb/r11 in 61 # The assembly uses the frame pointer register (r7 in Thumb/r11 in
61 # ARM), the compiler doesn't like that. 62 # ARM), the compiler doesn't like that.
62 'cflags!': [ 63 'cflags!': [
63 '-fno-omit-frame-pointer', 64 '-fno-omit-frame-pointer',
64 '-mapcs-frame', 65 '-mapcs-frame',
65 '-mapcs', 66 '-mapcs',
66 ], 67 ],
67 'cflags': [ 68 'cflags': [
68 '-fomit-frame-pointer', 69 '-fomit-frame-pointer',
69 '-mno-apcs-frame', 70 '-mno-apcs-frame',
70 ], 71 ],
71 'variables': { 72 'variables': {
72 'arm_neon_optional%': '<(arm_neon_optional>', 73 'arm_neon_optional%': '<(arm_neon_optional>',
73 }, 74 },
74 'sources': [ 75 'sources': [
75 '../src/opts/opts_check_arm.cpp', 76 '../src/opts/opts_check_arm.cpp',
76 '../src/opts/memset.arm.S', 77 '../src/opts/memset.arm.S',
77 '../src/opts/SkBitmapProcState_opts_arm.cpp', 78 '../src/opts/SkBitmapProcState_opts_arm.cpp',
78 '../src/opts/SkBlitMask_opts_arm.cpp', 79 '../src/opts/SkBlitMask_opts_arm.cpp',
79 '../src/opts/SkBlitRow_opts_arm.cpp', 80 '../src/opts/SkBlitRow_opts_arm.cpp',
80 '../src/opts/SkBlitRow_opts_arm.h', 81 '../src/opts/SkBlitRow_opts_arm.h',
82 '../src/opts/SkBlurImage_opts_none.cpp',
81 '../src/opts/SkMorphology_opts_none.cpp', 83 '../src/opts/SkMorphology_opts_none.cpp',
82 '../src/opts/SkXfermode_opts_arm.cpp', 84 '../src/opts/SkXfermode_opts_arm.cpp',
83 ], 85 ],
84 'conditions': [ 86 'conditions': [
85 [ 'arm_neon == 1 or arm_neon_optional == 1', { 87 [ 'arm_neon == 1 or arm_neon_optional == 1', {
86 'dependencies': [ 88 'dependencies': [
87 'opts_neon', 89 'opts_neon',
88 ] 90 ]
89 }], 91 }],
90 [ 'skia_os == "ios"', { 92 [ 'skia_os == "ios"', {
91 'sources!': [ 93 'sources!': [
92 # these fail to compile under xcode for ios 94 # these fail to compile under xcode for ios
93 '../src/opts/memset.arm.S', 95 '../src/opts/memset.arm.S',
94 '../src/opts/SkBitmapProcState_opts_arm.cpp', 96 '../src/opts/SkBitmapProcState_opts_arm.cpp',
95 '../src/opts/SkBlitRow_opts_arm.cpp', 97 '../src/opts/SkBlitRow_opts_arm.cpp',
96 ], 98 ],
97 }], 99 }],
98 ], 100 ],
99 }], 101 }],
100 [ '(skia_arch_type == "arm" and arm_version < 7) or (skia_os == "ios")', { 102 [ '(skia_arch_type == "arm" and arm_version < 7) or (skia_os == "ios")', {
101 'sources': [ 103 'sources': [
102 '../src/opts/SkBitmapProcState_opts_none.cpp', 104 '../src/opts/SkBitmapProcState_opts_none.cpp',
103 '../src/opts/SkBlitMask_opts_none.cpp', 105 '../src/opts/SkBlitMask_opts_none.cpp',
104 '../src/opts/SkBlitRow_opts_none.cpp', 106 '../src/opts/SkBlitRow_opts_none.cpp',
107 '../src/opts/SkBlurImage_opts_none.cpp',
105 '../src/opts/SkMorphology_opts_none.cpp', 108 '../src/opts/SkMorphology_opts_none.cpp',
106 '../src/opts/SkUtils_opts_none.cpp', 109 '../src/opts/SkUtils_opts_none.cpp',
107 '../src/opts/SkXfermode_opts_none.cpp', 110 '../src/opts/SkXfermode_opts_none.cpp',
108 ], 111 ],
109 }], 112 }],
110 ], 113 ],
111 }, 114 },
112 # For the same lame reasons as what is done for skia_opts, we have to 115 # For the same lame reasons as what is done for skia_opts, we have to
113 # create another target specifically for SSSE3 code as we would not want 116 # create another target specifically for SSSE3 code as we would not want
114 # to compile the SSE2 code with -mssse3 which would potentially allow 117 # to compile the SSE2 code with -mssse3 which would potentially allow
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 ], 183 ],
181 }, 184 },
182 ], 185 ],
183 } 186 }
184 187
185 # Local Variables: 188 # Local Variables:
186 # tab-width:2 189 # tab-width:2
187 # indent-tabs-mode:nil 190 # indent-tabs-mode:nil
188 # End: 191 # End:
189 # vim: set expandtab tabstop=2 shiftwidth=2: 192 # vim: set expandtab tabstop=2 shiftwidth=2:
OLDNEW
« no previous file with comments | « bench/BlurImageFilterBench.cpp ('k') | src/effects/SkBlurImageFilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698