diff --git a/src/ImageSharp/Common/ParallelUtils/ParallelHelper.cs b/src/ImageSharp/Common/ParallelUtils/ParallelHelper.cs
index fbbc57946..8512db5cc 100644
--- a/src/ImageSharp/Common/ParallelUtils/ParallelHelper.cs
+++ b/src/ImageSharp/Common/ParallelUtils/ParallelHelper.cs
@@ -13,7 +13,8 @@ using SixLabors.Primitives;
namespace SixLabors.ImageSharp.ParallelUtils
{
///
- /// Utility methods wrapping Parallel.For() execution optimized for image processing.
+ /// Utility methods for batched processing of pixel row intervals.
+ /// Parallel execution is optimized for image processing.
/// Use this instead of direct calls!
///
internal static class ParallelHelper
diff --git a/src/ImageSharp/Processing/Processors/Convolution/Convolution2DProcessor.cs b/src/ImageSharp/Processing/Processors/Convolution/Convolution2DProcessor.cs
index 24505eac0..d2282ec0e 100644
--- a/src/ImageSharp/Processing/Processors/Convolution/Convolution2DProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Convolution/Convolution2DProcessor.cs
@@ -68,7 +68,6 @@ namespace SixLabors.ImageSharp.Processing.Processors.Convolution
var workingRectangle = Rectangle.FromLTRB(startX, startY, endX, endY);
-#if true
ParallelHelper.IterateRows(
workingRectangle,
configuration,
@@ -133,70 +132,6 @@ namespace SixLabors.ImageSharp.Processing.Processors.Convolution
}
}
});
-#else
- ParallelFor.WithConfiguration(
- startY,
- endY,
- configuration,
- y =>
- {
- Span sourceRow = source.GetPixelRowSpan(y);
- Span targetRow = targetPixels.GetRowSpan(y);
-
- for (int x = startX; x < endX; x++)
- {
- float rX = 0;
- float gX = 0;
- float bX = 0;
- float rY = 0;
- float gY = 0;
- float bY = 0;
-
- // Apply each matrix multiplier to the color components for each pixel.
- for (int fy = 0; fy < kernelYHeight; fy++)
- {
- int fyr = fy - radiusY;
- int offsetY = y + fyr;
-
- offsetY = offsetY.Clamp(0, maxY);
- Span sourceOffsetRow = source.GetPixelRowSpan(offsetY);
-
- for (int fx = 0; fx < kernelXWidth; fx++)
- {
- int fxr = fx - radiusX;
- int offsetX = x + fxr;
-
- offsetX = offsetX.Clamp(0, maxX);
- Vector4 currentColor = sourceOffsetRow[offsetX].ToVector4().Premultiply();
-
- if (fy < kernelXHeight)
- {
- Vector4 kx = this.KernelX[fy, fx] * currentColor;
- rX += kx.X;
- gX += kx.Y;
- bX += kx.Z;
- }
-
- if (fx < kernelYWidth)
- {
- Vector4 ky = this.KernelY[fy, fx] * currentColor;
- rY += ky.X;
- gY += ky.Y;
- bY += ky.Z;
- }
- }
- }
-
- float red = MathF.Sqrt((rX * rX) + (rY * rY));
- float green = MathF.Sqrt((gX * gX) + (gY * gY));
- float blue = MathF.Sqrt((bX * bX) + (bY * bY));
-
- ref TPixel pixel = ref targetRow[x];
- pixel.PackFromVector4(
- new Vector4(red, green, blue, sourceRow[x].ToVector4().W).UnPremultiply());
- }
- });
-#endif
Buffer2D.SwapOrCopyContent(source.PixelBuffer, targetPixels);
}
diff --git a/src/ImageSharp/Processing/Processors/Convolution/Convolution2PassProcessor.cs b/src/ImageSharp/Processing/Processors/Convolution/Convolution2PassProcessor.cs
index 9263c262d..e45bb3ab2 100644
--- a/src/ImageSharp/Processing/Processors/Convolution/Convolution2PassProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Convolution/Convolution2PassProcessor.cs
@@ -85,7 +85,6 @@ namespace SixLabors.ImageSharp.Processing.Processors.Convolution
var workingRectangle = Rectangle.FromLTRB(startX, startY, endX, endY);
-#if true
ParallelHelper.IterateRows(
workingRectangle,
configuration,
@@ -125,45 +124,6 @@ namespace SixLabors.ImageSharp.Processing.Processors.Convolution
}
}
});
-#else
- ParallelFor.WithConfiguration(
- startY,
- endY,
- configuration,
- y =>
- {
- Span targetRow = targetPixels.GetRowSpan(y);
-
- for (int x = startX; x < endX; x++)
- {
- Vector4 destination = default;
-
- // Apply each matrix multiplier to the color components for each pixel.
- for (int fy = 0; fy < kernelHeight; fy++)
- {
- int fyr = fy - radiusY;
- int offsetY = y + fyr;
-
- offsetY = offsetY.Clamp(0, maxY);
- Span row = sourcePixels.GetRowSpan(offsetY);
-
- for (int fx = 0; fx < kernelWidth; fx++)
- {
- int fxr = fx - radiusX;
- int offsetX = x + fxr;
-
- offsetX = offsetX.Clamp(0, maxX);
-
- Vector4 currentColor = row[offsetX].ToVector4().Premultiply();
- destination += kernel[fy, fx] * currentColor;
- }
- }
-
- ref TPixel pixel = ref targetRow[x];
- pixel.PackFromVector4(destination.UnPremultiply());
- }
- });
-#endif
}
}
}
\ No newline at end of file
diff --git a/src/ImageSharp/Processing/Processors/Convolution/ConvolutionProcessor.cs b/src/ImageSharp/Processing/Processors/Convolution/ConvolutionProcessor.cs
index 64c9f4632..bac9a86cf 100644
--- a/src/ImageSharp/Processing/Processors/Convolution/ConvolutionProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Convolution/ConvolutionProcessor.cs
@@ -55,7 +55,6 @@ namespace SixLabors.ImageSharp.Processing.Processors.Convolution
var workingRect = Rectangle.FromLTRB(startX, startY, endX, endY);
-#if true
ParallelHelper.IterateRows(
workingRect,
configuration,
@@ -103,52 +102,6 @@ namespace SixLabors.ImageSharp.Processing.Processors.Convolution
}
}
});
-#else
- ParallelFor.WithConfiguration(
- startY,
- endY,
- configuration,
- y =>
- {
- Span sourceRow = source.GetPixelRowSpan(y);
- Span targetRow = targetPixels.GetRowSpan(y);
-
- for (int x = startX; x < endX; x++)
- {
- float red = 0;
- float green = 0;
- float blue = 0;
-
- // Apply each matrix multiplier to the color components for each pixel.
- for (int fy = 0; fy < kernelLength; fy++)
- {
- int fyr = fy - radius;
- int offsetY = y + fyr;
-
- offsetY = offsetY.Clamp(0, maxY);
- Span sourceOffsetRow = source.GetPixelRowSpan(offsetY);
-
- for (int fx = 0; fx < kernelLength; fx++)
- {
- int fxr = fx - radius;
- int offsetX = x + fxr;
-
- offsetX = offsetX.Clamp(0, maxX);
-
- Vector4 currentColor = sourceOffsetRow[offsetX].ToVector4().Premultiply();
- currentColor *= this.KernelXY[fy, fx];
-
- red += currentColor.X;
- green += currentColor.Y;
- blue += currentColor.Z;
- }
- }
-
- ref TPixel pixel = ref targetRow[x];
- pixel.PackFromVector4(new Vector4(red, green, blue, sourceRow[x].ToVector4().W).UnPremultiply());
- }
- });
-#endif
Buffer2D.SwapOrCopyContent(source.PixelBuffer, targetPixels);
}
diff --git a/src/ImageSharp/Processing/Processors/Convolution/EdgeDetectorCompassProcessor.cs b/src/ImageSharp/Processing/Processors/Convolution/EdgeDetectorCompassProcessor.cs
index 28a72922f..ebf9c8dec 100644
--- a/src/ImageSharp/Processing/Processors/Convolution/EdgeDetectorCompassProcessor.cs
+++ b/src/ImageSharp/Processing/Processors/Convolution/EdgeDetectorCompassProcessor.cs
@@ -138,7 +138,6 @@ namespace SixLabors.ImageSharp.Processing.Processors.Convolution
Buffer2D passPixels = pass.PixelBuffer;
Buffer2D targetPixels = source.PixelBuffer;
-#if true
ParallelHelper.IterateRows(
workingRect,
configuration,
@@ -170,34 +169,6 @@ namespace SixLabors.ImageSharp.Processing.Processors.Convolution
}
}
});
-#else
- ParallelFor.WithConfiguration(
- minY,
- maxY,
- configuration,
- y =>
- {
- int offsetY = y - shiftY;
-
- ref TPixel passPixelsBase = ref MemoryMarshal.GetReference(passPixels.GetRowSpan(offsetY));
- ref TPixel targetPixelsBase = ref MemoryMarshal.GetReference(targetPixels.GetRowSpan(offsetY));
-
- for (int x = minX; x < maxX; x++)
- {
- int offsetX = x - shiftX;
-
- // Grab the max components of the two pixels
- ref TPixel currentPassPixel = ref Unsafe.Add(ref passPixelsBase, offsetX);
- ref TPixel currentTargetPixel = ref Unsafe.Add(ref targetPixelsBase, offsetX);
-
- var pixelValue = Vector4.Max(
- currentPassPixel.ToVector4(),
- currentTargetPixel.ToVector4());
-
- currentTargetPixel.PackFromVector4(pixelValue);
- }
- });
-#endif
}
}
}