diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-04-14 15:45:58 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-04-14 15:45:58 +0000 |
commit | 8f9e681093aac6c46c71df604ac685cef46309a2 (patch) | |
tree | 7a24c6d7b616ed684ca713724f74d1e92fb3a159 /src/core/SkBitmapProcState_matrixProcs.cpp | |
parent | f6a5afb66b661c884cd308577431b7abf025b182 (diff) |
Revert of use templates instead of macros to build blitters (https://codereview.chromium.org/120633004/)
Reason for revert:
Broke build.
Original issue's description:
> use templates instead of macros to build blitters
>
> BUG=
>
> Committed: http://code.google.com/p/skia/source/detail?r=14178
R=mtklein@google.com, reed@google.com
TBR=mtklein@google.com, reed@google.com
NOTREECHECKS=true
NOTRY=true
BUG=
Author: bungeman@google.com
Review URL: https://codereview.chromium.org/236593006
git-svn-id: http://skia.googlecode.com/svn/trunk@14180 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkBitmapProcState_matrixProcs.cpp')
-rw-r--r-- | src/core/SkBitmapProcState_matrixProcs.cpp | 117 |
1 files changed, 30 insertions, 87 deletions
diff --git a/src/core/SkBitmapProcState_matrixProcs.cpp b/src/core/SkBitmapProcState_matrixProcs.cpp index 904e9488e7..57376d5699 100644 --- a/src/core/SkBitmapProcState_matrixProcs.cpp +++ b/src/core/SkBitmapProcState_matrixProcs.cpp @@ -33,10 +33,6 @@ static inline int sk_int_mod(int x, int n) { void decal_nofilter_scale(uint32_t dst[], SkFixed fx, SkFixed dx, int count); void decal_filter_scale(uint32_t dst[], SkFixed fx, SkFixed dx, int count); -#include "SkBitmapProcState_matrix_template.h" - -/////////////////////////////////////////////////////////////////////////////// - // Compile neon code paths if needed #if !SK_ARM_NEON_IS_NONE @@ -56,35 +52,6 @@ extern const SkBitmapProcState::MatrixProc RepeatX_RepeatY_Procs_neon[]; #define CHECK_FOR_DECAL #include "SkBitmapProcState_matrix.h" -struct ClampTileProcs { - static unsigned X(const SkBitmapProcState&, SkFixed fx, int max) { - return SkClampMax(fx >> 16, max); - } - static unsigned Y(const SkBitmapProcState&, SkFixed fy, int max) { - return SkClampMax(fy >> 16, max); - } -}; - -// Referenced in opts_check_SSE2.cpp -void ClampX_ClampY_nofilter_scale(const SkBitmapProcState& s, uint32_t xy[], - int count, int x, int y) { - return NoFilterProc_Scale<ClampTileProcs, true>(s, xy, count, x, y); -} -void ClampX_ClampY_nofilter_affine(const SkBitmapProcState& s, uint32_t xy[], - int count, int x, int y) { - return NoFilterProc_Affine<ClampTileProcs>(s, xy, count, x, y); -} - -static SkBitmapProcState::MatrixProc ClampX_ClampY_Procs[] = { - // only clamp lives in the right coord space to check for decal - ClampX_ClampY_nofilter_scale, - ClampX_ClampY_filter_scale, - ClampX_ClampY_nofilter_affine, - ClampX_ClampY_filter_affine, - NoFilterProc_Persp<ClampTileProcs>, - ClampX_ClampY_filter_persp -}; - #define MAKENAME(suffix) RepeatX_RepeatY ## suffix #define TILEX_PROCF(fx, max) SK_USHIFT16(((fx) & 0xFFFF) * ((max) + 1)) #define TILEY_PROCF(fy, max) SK_USHIFT16(((fy) & 0xFFFF) * ((max) + 1)) @@ -93,24 +60,6 @@ static SkBitmapProcState::MatrixProc ClampX_ClampY_Procs[] = { #include "SkBitmapProcState_matrix.h" #endif -struct RepeatTileProcs { - static unsigned X(const SkBitmapProcState&, SkFixed fx, int max) { - return SK_USHIFT16(((fx) & 0xFFFF) * ((max) + 1)); - } - static unsigned Y(const SkBitmapProcState&, SkFixed fy, int max) { - return SK_USHIFT16(((fy) & 0xFFFF) * ((max) + 1)); - } -}; - -static SkBitmapProcState::MatrixProc RepeatX_RepeatY_Procs[] = { - NoFilterProc_Scale<RepeatTileProcs, false>, - RepeatX_RepeatY_filter_scale, - NoFilterProc_Affine<RepeatTileProcs>, - RepeatX_RepeatY_filter_affine, - NoFilterProc_Persp<RepeatTileProcs>, - RepeatX_RepeatY_filter_persp -}; - #define MAKENAME(suffix) GeneralXY ## suffix #define PREAMBLE(state) SkBitmapProcState::FixedTileProc tileProcX = (state).fTileProcX; (void) tileProcX; \ SkBitmapProcState::FixedTileProc tileProcY = (state).fTileProcY; (void) tileProcY; \ @@ -126,27 +75,8 @@ static SkBitmapProcState::MatrixProc RepeatX_RepeatY_Procs[] = { #define TILEY_LOW_BITS(fy, max) tileLowBitsProcY(fy, (max) + 1) #include "SkBitmapProcState_matrix.h" -struct GeneralTileProcs { - static unsigned X(const SkBitmapProcState& s, SkFixed fx, int max) { - return SK_USHIFT16(s.fTileProcX(fx) * ((max) + 1)); - } - static unsigned Y(const SkBitmapProcState& s, SkFixed fy, int max) { - return SK_USHIFT16(s.fTileProcY(fy) * ((max) + 1)); - } -}; - -static SkBitmapProcState::MatrixProc GeneralXY_Procs[] = { - NoFilterProc_Scale<GeneralTileProcs, false>, - GeneralXY_filter_scale, - NoFilterProc_Affine<GeneralTileProcs>, - GeneralXY_filter_affine, - NoFilterProc_Persp<GeneralTileProcs>, - GeneralXY_filter_persp -}; - -/////////////////////////////////////////////////////////////////////////////// - -static inline U16CPU fixed_clamp(SkFixed x) { +static inline U16CPU fixed_clamp(SkFixed x) +{ if (x < 0) { x = 0; } @@ -156,7 +86,8 @@ static inline U16CPU fixed_clamp(SkFixed x) { return x; } -static inline U16CPU fixed_repeat(SkFixed x) { +static inline U16CPU fixed_repeat(SkFixed x) +{ return x & 0xFFFF; } @@ -166,7 +97,8 @@ static inline U16CPU fixed_repeat(SkFixed x) { #pragma optimize("", off) #endif -static inline U16CPU fixed_mirror(SkFixed x) { +static inline U16CPU fixed_mirror(SkFixed x) +{ SkFixed s = x << 15 >> 31; // s is FFFFFFFF if we're on an odd interval, or 0 if an even interval return (x ^ s) & 0xFFFF; @@ -176,13 +108,12 @@ static inline U16CPU fixed_mirror(SkFixed x) { #pragma optimize("", on) #endif -static SkBitmapProcState::FixedTileProc choose_tile_proc(unsigned m) { - if (SkShader::kClamp_TileMode == m) { +static SkBitmapProcState::FixedTileProc choose_tile_proc(unsigned m) +{ + if (SkShader::kClamp_TileMode == m) return fixed_clamp; - } - if (SkShader::kRepeat_TileMode == m) { + if (SkShader::kRepeat_TileMode == m) return fixed_repeat; - } SkASSERT(SkShader::kMirror_TileMode == m); return fixed_mirror; } @@ -247,10 +178,12 @@ static SkBitmapProcState::IntTileProc choose_int_tile_proc(unsigned tm) { ////////////////////////////////////////////////////////////////////////////// -void decal_nofilter_scale(uint32_t dst[], SkFixed fx, SkFixed dx, int count) { +void decal_nofilter_scale(uint32_t dst[], SkFixed fx, SkFixed dx, int count) +{ int i; - for (i = (count >> 2); i > 0; --i) { + for (i = (count >> 2); i > 0; --i) + { *dst++ = pack_two_shorts(fx >> 16, (fx + dx) >> 16); fx += dx+dx; *dst++ = pack_two_shorts(fx >> 16, (fx + dx) >> 16); @@ -264,13 +197,18 @@ void decal_nofilter_scale(uint32_t dst[], SkFixed fx, SkFixed dx, int count) { } } -void decal_filter_scale(uint32_t dst[], SkFixed fx, SkFixed dx, int count) { - if (count & 1) { +void decal_filter_scale(uint32_t dst[], SkFixed fx, SkFixed dx, int count) +{ + + + if (count & 1) + { SkASSERT((fx >> (16 + 14)) == 0); *dst++ = (fx >> 12 << 14) | ((fx >> 16) + 1); fx += dx; } - while ((count -= 2) >= 0) { + while ((count -= 2) >= 0) + { SkASSERT((fx >> (16 + 14)) == 0); *dst++ = (fx >> 12 << 14) | ((fx >> 16) + 1); fx += dx; @@ -474,7 +412,8 @@ static void mirrorx_nofilter_trans(const SkBitmapProcState& s, /////////////////////////////////////////////////////////////////////////////// -SkBitmapProcState::MatrixProc SkBitmapProcState::chooseMatrixProc(bool trivial_matrix) { +SkBitmapProcState::MatrixProc +SkBitmapProcState::chooseMatrixProc(bool trivial_matrix) { // test_int_tileprocs(); // check for our special case when there is no scale/affine/perspective if (trivial_matrix) { @@ -500,7 +439,9 @@ SkBitmapProcState::MatrixProc SkBitmapProcState::chooseMatrixProc(bool trivial_m index += 2; } - if (SkShader::kClamp_TileMode == fTileModeX && SkShader::kClamp_TileMode == fTileModeY) { + if (SkShader::kClamp_TileMode == fTileModeX && + SkShader::kClamp_TileMode == fTileModeY) + { // clamp gets special version of filterOne fFilterOneX = SK_Fixed1; fFilterOneY = SK_Fixed1; @@ -511,7 +452,9 @@ SkBitmapProcState::MatrixProc SkBitmapProcState::chooseMatrixProc(bool trivial_m fFilterOneX = SK_Fixed1 / fBitmap->width(); fFilterOneY = SK_Fixed1 / fBitmap->height(); - if (SkShader::kRepeat_TileMode == fTileModeX && SkShader::kRepeat_TileMode == fTileModeY) { + if (SkShader::kRepeat_TileMode == fTileModeX && + SkShader::kRepeat_TileMode == fTileModeY) + { return SK_ARM_NEON_WRAP(RepeatX_RepeatY_Procs)[index]; } |