| Index: src/opts/SkBitmapFilter_opts_SSE2.cpp
|
| diff --git a/src/opts/SkBitmapFilter_opts_SSE2.cpp b/src/opts/SkBitmapFilter_opts_SSE2.cpp
|
| index b0405669218ba635017e36d308374235eae44953..b831e298d044ad53ac9f399e422bea7451116952 100644
|
| --- a/src/opts/SkBitmapFilter_opts_SSE2.cpp
|
| +++ b/src/opts/SkBitmapFilter_opts_SSE2.cpp
|
| @@ -108,74 +108,6 @@ void highQualityFilter_SSE2(const SkBitmapProcState& s, int x, int y,
|
| }
|
| }
|
|
|
| -void highQualityFilter_ScaleOnly_SSE2(const SkBitmapProcState &s, int x, int y,
|
| - SkPMColor *SK_RESTRICT colors, int count) {
|
| - const int maxX = s.fBitmap->width() - 1;
|
| - const int maxY = s.fBitmap->height() - 1;
|
| -
|
| - SkPoint srcPt;
|
| - s.fInvProc(s.fInvMatrix, SkIntToScalar(x),
|
| - SkIntToScalar(y), &srcPt);
|
| - srcPt.fY -= SK_ScalarHalf;
|
| - int sy = SkScalarFloorToInt(srcPt.fY);
|
| -
|
| - int y0 = SkTMax(0, int(ceil(sy-s.getBitmapFilter()->width() + 0.5f)));
|
| - int y1 = SkTMin(maxY, int(floor(sy+s.getBitmapFilter()->width() + 0.5f)));
|
| -
|
| - while (count-- > 0) {
|
| - srcPt.fX -= SK_ScalarHalf;
|
| - srcPt.fY -= SK_ScalarHalf;
|
| -
|
| - int sx = SkScalarFloorToInt(srcPt.fX);
|
| -
|
| - float weight = 0;
|
| - __m128 accum = _mm_setzero_ps();
|
| -
|
| - int x0 = SkTMax(0, int(ceil(sx-s.getBitmapFilter()->width() + 0.5f)));
|
| - int x1 = SkTMin(maxX, int(floor(sx+s.getBitmapFilter()->width() + 0.5f)));
|
| -
|
| - for (int src_y = y0; src_y <= y1; src_y++) {
|
| - float yweight = SkScalarToFloat(s.getBitmapFilter()->lookupScalar(srcPt.fY - src_y));
|
| -
|
| - for (int src_x = x0; src_x <= x1 ; src_x++) {
|
| - float xweight = SkScalarToFloat(s.getBitmapFilter()->lookupScalar(srcPt.fX - src_x));
|
| -
|
| - float combined_weight = xweight * yweight;
|
| -
|
| - SkPMColor color = *s.fBitmap->getAddr32(src_x, src_y);
|
| -
|
| - __m128 c = _mm_set_ps((float)SkGetPackedB32(color),
|
| - (float)SkGetPackedG32(color),
|
| - (float)SkGetPackedR32(color),
|
| - (float)SkGetPackedA32(color));
|
| -
|
| - __m128 weightVector = _mm_set1_ps(combined_weight);
|
| -
|
| - accum = _mm_add_ps(accum, _mm_mul_ps(c, weightVector));
|
| - weight += combined_weight;
|
| - }
|
| - }
|
| -
|
| - __m128 totalWeightVector = _mm_set1_ps(weight);
|
| - accum = _mm_div_ps(accum, totalWeightVector);
|
| - accum = _mm_add_ps(accum, _mm_set1_ps(0.5f));
|
| -
|
| - float localResult[4];
|
| - _mm_storeu_ps(localResult, accum);
|
| - int a = SkClampMax(int(localResult[0]), 255);
|
| - int r = SkClampMax(int(localResult[1]), a);
|
| - int g = SkClampMax(int(localResult[2]), a);
|
| - int b = SkClampMax(int(localResult[3]), a);
|
| -
|
| - *colors++ = SkPackARGB32(a, r, g, b);
|
| -
|
| - x++;
|
| -
|
| - s.fInvProc(s.fInvMatrix, SkIntToScalar(x),
|
| - SkIntToScalar(y), &srcPt);
|
| - }
|
| -}
|
| -
|
| // Convolves horizontally along a single row. The row data is given in
|
| // |src_data| and continues for the num_values() of the filter.
|
| void convolveHorizontally_SSE2(const unsigned char* src_data,
|
|
|