arm: dynamic NEON support for SkBitmapProcState matrix operations.
This patch implements dynamic ARM NEON support for the functions
implemented by src/core/SkBitmapProcState_matrixProcs.cpp.
- Because the SkBitmapProcState_matrix_{clamp,repeat}.h headers
are NEON-specific, they are renamed with a _neon.h suffix, and
moved to src/opts/ (from src/core/)
- Add a new file src/opts/SkBitmapProcState_matrixProcs_neon.cpp
which implements the NEON code paths for all builds, and add
it to the 'opts_neon' static library.
- Modify SkBitmapProcState_matrixProcs.cpp to select the right
code-path depending on our build configuration. Note that in
the case where 'arm_neon == 1', we do not embed regular ARM
code paths in the final binary. Only 'arm_neon_optional == 1'
builds will contain both regular and NEON code paths at the
same time.
Note that there doesn't seem to be a simple way to put the
NEON-specific selection from that currently is in
SkBitmapProcState_matrixProcs.cpp into src/opts/. Doing so
would require much more drastic restructuring. This is also
true of the other SkBitmapProcState source files that will
be touched in a future patch.
Review URL: https://codereview.appspot.com/6453065
git-svn-id: http://skia.googlecode.com/svn/trunk@4888 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gyp/opts.gyp b/gyp/opts.gyp
index ca2b1c1..8c85b9a 100644
--- a/gyp/opts.gyp
+++ b/gyp/opts.gyp
@@ -126,6 +126,7 @@
'../include/config',
'../include/core',
'../src/core',
+ '../src/opts',
],
'cflags!': [
'-fno-omit-frame-pointer',
@@ -134,12 +135,15 @@
'-mfpu=vfpv3-d16',
],
'cflags': [
- '-fomit-frame-pointer',
'-mfpu=neon',
+ '-fomit-frame-pointer',
],
'sources': [
'../src/opts/memset16_neon.S',
'../src/opts/memset32_neon.S',
+ '../src/opts/SkBitmapProcState_matrixProcs_neon.cpp',
+ '../src/opts/SkBitmapProcState_matrix_clamp_neon.h',
+ '../src/opts/SkBitmapProcState_matrix_repeat_neon.h',
],
},
],