diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-09-05 20:31:17 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-09-05 20:31:17 +0000 |
commit | fed04b34315ed72dbb20e630908638d1c829c760 (patch) | |
tree | 1a306b22dbe4f62c6de3ee441cde4f374b3af979 /src/core/SkConvolver.cpp | |
parent | bca421b468f53a591333918248f54bbd958389d2 (diff) |
remove fConvolutionProcs from State, and just use it locally
BUG=
R=humper@google.com
Review URL: https://codereview.chromium.org/23796005
git-svn-id: http://skia.googlecode.com/svn/trunk@11118 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkConvolver.cpp')
-rw-r--r-- | src/core/SkConvolver.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/core/SkConvolver.cpp b/src/core/SkConvolver.cpp index f426ef00d1..7666e6fadc 100644 --- a/src/core/SkConvolver.cpp +++ b/src/core/SkConvolver.cpp @@ -337,7 +337,7 @@ void BGRAConvolve2D(const unsigned char* sourceData, const SkConvolutionFilter1D& filterY, int outputByteRowStride, unsigned char* output, - SkConvolutionProcs* convolveProcs, + const SkConvolutionProcs& convolveProcs, bool useSimdIfPossible) { int maxYFilterSize = filterY.maxFilter(); @@ -364,7 +364,7 @@ void BGRAConvolve2D(const unsigned char* sourceData, // convolution pass yet. Somehow Windows does not like it. int rowBufferWidth = (filterX.numValues() + 15) & ~0xF; int rowBufferHeight = maxYFilterSize + - (convolveProcs->fConvolve4RowsHorizontally ? 4 : 0); + (convolveProcs.fConvolve4RowsHorizontally ? 4 : 0); CircularRowBuffer rowBuffer(rowBufferWidth, rowBufferHeight, filterOffset); @@ -387,7 +387,7 @@ void BGRAConvolve2D(const unsigned char* sourceData, // rows we need to avoid the SSE implementation for here. filterX.FilterForValue(filterX.numValues() - 1, &lastFilterOffset, &lastFilterLength); - int avoidSimdRows = 1 + convolveProcs->fExtraHorizontalReads / + int avoidSimdRows = 1 + convolveProcs.fExtraHorizontalReads / (lastFilterOffset + lastFilterLength); filterY.FilterForValue(numOutputRows - 1, &lastFilterOffset, @@ -399,7 +399,7 @@ void BGRAConvolve2D(const unsigned char* sourceData, // Generate output rows until we have enough to run the current filter. while (nextXRow < filterOffset + filterLength) { - if (convolveProcs->fConvolve4RowsHorizontally && + if (convolveProcs.fConvolve4RowsHorizontally && nextXRow + 3 < lastFilterOffset + lastFilterLength - avoidSimdRows) { const unsigned char* src[4]; @@ -408,14 +408,14 @@ void BGRAConvolve2D(const unsigned char* sourceData, src[i] = &sourceData[(nextXRow + i) * sourceByteRowStride]; outRow[i] = rowBuffer.advanceRow(); } - convolveProcs->fConvolve4RowsHorizontally(src, filterX, outRow); + convolveProcs.fConvolve4RowsHorizontally(src, filterX, outRow); nextXRow += 4; } else { // Check if we need to avoid SSE2 for this row. - if (convolveProcs->fConvolveHorizontally && + if (convolveProcs.fConvolveHorizontally && nextXRow < lastFilterOffset + lastFilterLength - avoidSimdRows) { - convolveProcs->fConvolveHorizontally( + convolveProcs.fConvolveHorizontally( &sourceData[nextXRow * sourceByteRowStride], filterX, rowBuffer.advanceRow(), sourceHasAlpha); } else { @@ -446,8 +446,8 @@ void BGRAConvolve2D(const unsigned char* sourceData, unsigned char* const* firstRowForFilter = &rowsToConvolve[filterOffset - firstRowInCircularBuffer]; - if (convolveProcs->fConvolveVertically) { - convolveProcs->fConvolveVertically(filterValues, filterLength, + if (convolveProcs.fConvolveVertically) { + convolveProcs.fConvolveVertically(filterValues, filterLength, firstRowForFilter, filterX.numValues(), curOutputRow, sourceHasAlpha); |