From c542dffd08ef20052643a5f8c7688ee4a22eaacb Mon Sep 17 00:00:00 2001 From: Brian Popow Date: Sun, 26 Jan 2020 17:19:50 +0100 Subject: [PATCH] Revert changes from 692c35b166ca7a18680b5efa6cd863ee48e01e11: "Switched to vectorized pixel conversions" --- .../Effects/OilPaintingProcessor{TPixel}.cs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/ImageSharp/Processing/Processors/Effects/OilPaintingProcessor{TPixel}.cs b/src/ImageSharp/Processing/Processors/Effects/OilPaintingProcessor{TPixel}.cs index cbdd0c6f8..3a97fa727 100644 --- a/src/ImageSharp/Processing/Processors/Effects/OilPaintingProcessor{TPixel}.cs +++ b/src/ImageSharp/Processing/Processors/Effects/OilPaintingProcessor{TPixel}.cs @@ -63,16 +63,12 @@ namespace SixLabors.ImageSharp.Processing.Processors.Effects source.CopyTo(targetPixels); var workingRect = Rectangle.FromLTRB(startX, startY, endX, endY); - ParallelHelper.IterateRowsWithTempBuffer( + ParallelHelper.IterateRows( workingRect, this.Configuration, - (rows, vectorBuffer) => + (rows) => { - Span vectorSpan = vectorBuffer.Span; - int length = vectorSpan.Length; - ref Vector4 vectorSpanRef = ref MemoryMarshal.GetReference(vectorSpan); - - // Rent the shared buffer only once per parallel item + // Rent the shared buffer only once per parallel item. using (IMemoryOwner bins = configuration.MemoryAllocator.Allocate(levels * 4)) { ref float binsRef = ref bins.GetReference(); @@ -84,8 +80,7 @@ namespace SixLabors.ImageSharp.Processing.Processors.Effects for (int y = rows.Min; y < rows.Max; y++) { Span sourceRow = source.GetPixelRowSpan(y); - Span targetRowSpan = targetPixels.GetRowSpan(y).Slice(startX, length); - PixelOperations.Instance.ToVector4(configuration, targetRowSpan, vectorSpan); + Span targetRow = targetPixels.GetRowSpan(y); for (int x = startX; x < endX; x++) { @@ -135,11 +130,10 @@ namespace SixLabors.ImageSharp.Processing.Processors.Effects float green = MathF.Abs(Unsafe.Add(ref greenBinRef, maxIndex) / maxIntensity); float alpha = sourceRow[x].ToVector4().W; - Unsafe.Add(ref vectorSpanRef, x) = new Vector4(red, green, blue, alpha); + ref TPixel pixel = ref targetRow[x]; + pixel.FromVector4(new Vector4(red, green, blue, sourceRow[x].ToVector4().W)); } } - - PixelOperations.Instance.FromVector4Destructive(configuration, vectorSpan, targetRowSpan); } } });