Browse Source

Removed HasAvx2 flag, reorganized test skipping

pull/1864/head
Dmitry Pentin 5 years ago
parent
commit
add85f8999
  1. 12
      src/ImageSharp/Common/Helpers/SimdUtils.cs
  2. 2
      src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverterAvx.cs
  3. 2
      src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverterBase.cs
  4. 2
      src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverterScalar.cs
  5. 2
      src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverterVector.cs
  6. 45
      tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs

12
src/ImageSharp/Common/Helpers/SimdUtils.cs

@ -33,18 +33,6 @@ namespace SixLabors.ImageSharp
public static bool HasVector4 { get; } = public static bool HasVector4 { get; } =
Vector.IsHardwareAccelerated && Vector<float>.Count == 4; Vector.IsHardwareAccelerated && Vector<float>.Count == 4;
public static bool HasAvx2
{
get
{
#if SUPPORTS_RUNTIME_INTRINSICS
return Avx2.IsSupported;
#else
return false;
#endif
}
}
/// <summary> /// <summary>
/// Transform all scalars in 'v' in a way that converting them to <see cref="int"/> would have rounding semantics. /// Transform all scalars in 'v' in a way that converting them to <see cref="int"/> would have rounding semantics.
/// </summary> /// </summary>

2
src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverterAvx.cs

@ -25,7 +25,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters
{ {
} }
protected override bool IsAvailable => Avx.IsSupported; public override bool IsAvailable => Avx.IsSupported;
} }
} }
} }

2
src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverterBase.cs

@ -33,7 +33,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters
/// Gets a value indicating whether this <see cref="JpegColorConverterBase"/> is available /// Gets a value indicating whether this <see cref="JpegColorConverterBase"/> is available
/// on the current runtime and CPU architecture. /// on the current runtime and CPU architecture.
/// </summary> /// </summary>
protected abstract bool IsAvailable { get; } public abstract bool IsAvailable { get; }
/// <summary> /// <summary>
/// Gets the <see cref="JpegColorSpace"/> of this converter. /// Gets the <see cref="JpegColorSpace"/> of this converter.

2
src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverterScalar.cs

@ -16,7 +16,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters
{ {
} }
protected override bool IsAvailable => true; public override bool IsAvailable => true;
} }
} }
} }

2
src/ImageSharp/Formats/Jpeg/Components/Decoder/ColorConverters/JpegColorConverterVector.cs

@ -25,7 +25,7 @@ namespace SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.ColorConverters
{ {
} }
protected sealed override bool IsAvailable => SimdUtils.HasVector8; public sealed override bool IsAvailable => SimdUtils.HasVector8;
public override void ConvertToRgbInplace(in ComponentValues values) public override void ConvertToRgbInplace(in ComponentValues values)
{ {

45
tests/ImageSharp.Tests/Formats/Jpg/JpegColorConverterTests.cs

@ -75,14 +75,17 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
[MemberData(nameof(CommonConversionData))] [MemberData(nameof(CommonConversionData))]
public void FromYCbCrAvx2(int inputBufferLength, int resultBufferLength, int seed) public void FromYCbCrAvx2(int inputBufferLength, int resultBufferLength, int seed)
{ {
if (!SimdUtils.HasAvx2) var converter = new JpegColorConverterBase.FromYCbCrAvx(8);
if (!converter.IsAvailable)
{ {
this.Output.WriteLine("No AVX2 present, skipping test!"); this.Output.WriteLine(
$"Skipping test - {converter.GetType().Name} is not supported on current hardware.");
return; return;
} }
ValidateConversion( ValidateConversion(
new JpegColorConverterBase.FromYCbCrAvx(8), converter,
3, 3,
inputBufferLength, inputBufferLength,
resultBufferLength, resultBufferLength,
@ -137,14 +140,17 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
[MemberData(nameof(CommonConversionData))] [MemberData(nameof(CommonConversionData))]
public void FromCmykAvx2(int inputBufferLength, int resultBufferLength, int seed) public void FromCmykAvx2(int inputBufferLength, int resultBufferLength, int seed)
{ {
if (!SimdUtils.HasAvx2) var converter = new JpegColorConverterBase.FromCmykAvx(8);
if (!converter.IsAvailable)
{ {
this.Output.WriteLine("No AVX2 present, skipping test!"); this.Output.WriteLine(
$"Skipping test - {converter.GetType().Name} is not supported on current hardware.");
return; return;
} }
ValidateConversion( ValidateConversion(
new JpegColorConverterBase.FromCmykAvx(8), converter,
4, 4,
inputBufferLength, inputBufferLength,
resultBufferLength, resultBufferLength,
@ -181,14 +187,17 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
[MemberData(nameof(CommonConversionData))] [MemberData(nameof(CommonConversionData))]
public void FromGrayscaleAvx2(int inputBufferLength, int resultBufferLength, int seed) public void FromGrayscaleAvx2(int inputBufferLength, int resultBufferLength, int seed)
{ {
if (!SimdUtils.HasAvx2) var converter = new JpegColorConverterBase.FromGrayscaleAvx(8);
if (!converter.IsAvailable)
{ {
this.Output.WriteLine("No AVX2 present, skipping test!"); this.Output.WriteLine(
$"Skipping test - {converter.GetType().Name} is not supported on current hardware.");
return; return;
} }
ValidateConversion( ValidateConversion(
new JpegColorConverterBase.FromGrayscaleAvx(8), converter,
1, 1,
inputBufferLength, inputBufferLength,
resultBufferLength, resultBufferLength,
@ -243,14 +252,17 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
[MemberData(nameof(CommonConversionData))] [MemberData(nameof(CommonConversionData))]
public void FromRgbAvx2(int inputBufferLength, int resultBufferLength, int seed) public void FromRgbAvx2(int inputBufferLength, int resultBufferLength, int seed)
{ {
if (!SimdUtils.HasAvx2) var converter = new JpegColorConverterBase.FromRgbAvx(8);
if (!converter.IsAvailable)
{ {
this.Output.WriteLine("No AVX2 present, skipping test!"); this.Output.WriteLine(
$"Skipping test - {converter.GetType().Name} is not supported on current hardware.");
return; return;
} }
ValidateConversion( ValidateConversion(
new JpegColorConverterBase.FromRgbAvx(8), converter,
3, 3,
inputBufferLength, inputBufferLength,
resultBufferLength, resultBufferLength,
@ -305,14 +317,17 @@ namespace SixLabors.ImageSharp.Tests.Formats.Jpg
[MemberData(nameof(CommonConversionData))] [MemberData(nameof(CommonConversionData))]
public void FromYccKAvx2(int inputBufferLength, int resultBufferLength, int seed) public void FromYccKAvx2(int inputBufferLength, int resultBufferLength, int seed)
{ {
if (!SimdUtils.HasAvx2) var converter = new JpegColorConverterBase.FromYccKAvx(8);
if (!converter.IsAvailable)
{ {
this.Output.WriteLine("No AVX2 present, skipping test!"); this.Output.WriteLine(
$"Skipping test - {converter.GetType().Name} is not supported on current hardware.");
return; return;
} }
ValidateConversion( ValidateConversion(
new JpegColorConverterBase.FromYccKAvx(8), converter,
4, 4,
inputBufferLength, inputBufferLength,
resultBufferLength, resultBufferLength,

Loading…
Cancel
Save