diff options
-rw-r--r-- | experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp | 16 | ||||
-rw-r--r-- | include/core/SkShader.h | 1 | ||||
-rw-r--r-- | include/gpu/GrTestUtils.h | 13 | ||||
-rw-r--r-- | src/effects/SkPerlinNoiseShader.cpp | 7 | ||||
-rw-r--r-- | src/effects/gradients/SkLinearGradient.cpp | 7 | ||||
-rw-r--r-- | src/effects/gradients/SkRadialGradient.cpp | 7 | ||||
-rw-r--r-- | src/effects/gradients/SkSweepGradient.cpp | 7 | ||||
-rw-r--r-- | src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp | 35 | ||||
-rw-r--r-- | src/gpu/GrTestUtils.cpp | 14 |
9 files changed, 50 insertions, 57 deletions
diff --git a/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp b/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp index 593fda1247..091a55b4c8 100644 --- a/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp +++ b/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp @@ -727,12 +727,8 @@ sk_sp<GrFragmentProcessor> GrPerlinNoise2Effect::TestCreate(GrProcessorTestData* SkPerlinNoiseShader2::MakeTurbulence(baseFrequencyX, baseFrequencyY, numOctaves, seed, stitchTiles ? &tileSize : nullptr)); - GrPaint grPaint; - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto colorSpace = GrTest::TestColorSpace(d->fRandom); - return shader->asFragmentProcessor(SkShader::AsFPArgs(d->fContext, &viewMatrix, nullptr, - kNone_SkFilterQuality, colorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + return shader->asFragmentProcessor(asFPArgs.args()); } void GrGLPerlinNoise2::emitCode(EmitArgs& args) { @@ -1136,12 +1132,8 @@ sk_sp<GrFragmentProcessor> GrImprovedPerlinNoiseEffect::TestCreate(GrProcessorTe numOctaves, z)); - GrPaint grPaint; - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto colorSpace = GrTest::TestColorSpace(d->fRandom); - return shader->asFragmentProcessor(SkShader::AsFPArgs(d->fContext, &viewMatrix, nullptr, - kNone_SkFilterQuality, colorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + return shader->asFragmentProcessor(asFPArgs.args()); } void GrGLImprovedPerlinNoise::emitCode(EmitArgs& args) { diff --git a/include/core/SkShader.h b/include/core/SkShader.h index efd9aa0759..f9796d6c1a 100644 --- a/include/core/SkShader.h +++ b/include/core/SkShader.h @@ -327,6 +327,7 @@ public: #if SK_SUPPORT_GPU struct AsFPArgs { + AsFPArgs() {} AsFPArgs(GrContext* context, const SkMatrix* viewMatrix, const SkMatrix* localMatrix, diff --git a/include/gpu/GrTestUtils.h b/include/gpu/GrTestUtils.h index 17bf12af30..373847dfe9 100644 --- a/include/gpu/GrTestUtils.h +++ b/include/gpu/GrTestUtils.h @@ -16,9 +16,11 @@ #include "GrColorSpaceXform.h" #include "SkPathEffect.h" #include "SkRandom.h" +#include "SkShader.h" #include "SkStrokeRec.h" #include "../private/SkTemplates.h" +struct GrProcessorTestData; class GrStyle; class SkMatrix; class SkPath; @@ -45,6 +47,17 @@ void TestStyle(SkRandom*, GrStyle*); sk_sp<SkColorSpace> TestColorSpace(SkRandom*); sk_sp<GrColorSpaceXform> TestColorXform(SkRandom*); +class TestAsFPArgs { +public: + TestAsFPArgs(GrProcessorTestData*); + const SkShader::AsFPArgs& args() const { return fArgs; } + +private: + SkShader::AsFPArgs fArgs; + SkMatrix fViewMatrixStorage; + sk_sp<SkColorSpace> fColorSpaceStorage; +}; + // We have a simplified dash path effect here to avoid relying on SkDashPathEffect which // is in the optional build target effects. class TestDashPathEffect : public SkPathEffect { diff --git a/src/effects/SkPerlinNoiseShader.cpp b/src/effects/SkPerlinNoiseShader.cpp index caff4958af..5dbdab1f32 100644 --- a/src/effects/SkPerlinNoiseShader.cpp +++ b/src/effects/SkPerlinNoiseShader.cpp @@ -592,11 +592,8 @@ sk_sp<GrFragmentProcessor> GrPerlinNoiseEffect::TestCreate(GrProcessorTestData* SkPerlinNoiseShader::MakeTurbulence(baseFrequencyX, baseFrequencyY, numOctaves, seed, stitchTiles ? &tileSize : nullptr)); - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto colorSpace = GrTest::TestColorSpace(d->fRandom); - return shader->asFragmentProcessor(SkShader::AsFPArgs(d->fContext, &viewMatrix, nullptr, - kNone_SkFilterQuality, colorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + return shader->asFragmentProcessor(asFPArgs.args()); } void GrGLPerlinNoise::emitCode(EmitArgs& args) { diff --git a/src/effects/gradients/SkLinearGradient.cpp b/src/effects/gradients/SkLinearGradient.cpp index a34515cfef..ea20595d3d 100644 --- a/src/effects/gradients/SkLinearGradient.cpp +++ b/src/effects/gradients/SkLinearGradient.cpp @@ -420,11 +420,8 @@ sk_sp<GrFragmentProcessor> GrLinearGradient::TestCreate(GrProcessorTestData* d) params.fColorCount, params.fTileMode) : SkGradientShader::MakeLinear(points, params.fColors, params.fStops, params.fColorCount, params.fTileMode); - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto dstColorSpace = GrTest::TestColorSpace(d->fRandom); - sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs( - d->fContext, &viewMatrix, NULL, kNone_SkFilterQuality, dstColorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(asFPArgs.args()); GrAlwaysAssert(fp); return fp; } diff --git a/src/effects/gradients/SkRadialGradient.cpp b/src/effects/gradients/SkRadialGradient.cpp index 5cf524537e..8ad588013b 100644 --- a/src/effects/gradients/SkRadialGradient.cpp +++ b/src/effects/gradients/SkRadialGradient.cpp @@ -314,11 +314,8 @@ sk_sp<GrFragmentProcessor> GrRadialGradient::TestCreate(GrProcessorTestData* d) params.fStops, params.fColorCount, params.fTileMode) : SkGradientShader::MakeRadial(center, radius, params.fColors, params.fStops, params.fColorCount, params.fTileMode); - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto dstColorSpace = GrTest::TestColorSpace(d->fRandom); - sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs( - d->fContext, &viewMatrix, NULL, kNone_SkFilterQuality, dstColorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(asFPArgs.args()); GrAlwaysAssert(fp); return fp; } diff --git a/src/effects/gradients/SkSweepGradient.cpp b/src/effects/gradients/SkSweepGradient.cpp index 04fc2c7436..b791f988f3 100644 --- a/src/effects/gradients/SkSweepGradient.cpp +++ b/src/effects/gradients/SkSweepGradient.cpp @@ -196,11 +196,8 @@ sk_sp<GrFragmentProcessor> GrSweepGradient::TestCreate(GrProcessorTestData* d) { params.fStops, params.fColorCount) : SkGradientShader::MakeSweep(center.fX, center.fY, params.fColors, params.fStops, params.fColorCount); - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto dstColorSpace = GrTest::TestColorSpace(d->fRandom); - sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs( - d->fContext, &viewMatrix, NULL, kNone_SkFilterQuality, dstColorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(asFPArgs.args()); GrAlwaysAssert(fp); return fp; } diff --git a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp index 8eb8b638f5..1275be7315 100644 --- a/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp +++ b/src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp @@ -207,11 +207,8 @@ sk_sp<GrFragmentProcessor> Edge2PtConicalEffect::TestCreate(GrProcessorTestData* SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2, params.fColors, params.fStops, params.fColorCount, params.fTileMode); - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto dstColorSpace = GrTest::TestColorSpace(d->fRandom); - sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs( - d->fContext, &viewMatrix, NULL, kNone_SkFilterQuality, dstColorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(asFPArgs.args()); GrAlwaysAssert(fp); return fp; } @@ -485,11 +482,8 @@ sk_sp<GrFragmentProcessor> FocalOutside2PtConicalEffect::TestCreate(GrProcessorT SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2, params.fColors, params.fStops, params.fColorCount, params.fTileMode); - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto dstColorSpace = GrTest::TestColorSpace(d->fRandom); - sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs( - d->fContext, &viewMatrix, NULL, kNone_SkFilterQuality, dstColorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(asFPArgs.args()); GrAlwaysAssert(fp); return fp; } @@ -691,11 +685,8 @@ sk_sp<GrFragmentProcessor> FocalInside2PtConicalEffect::TestCreate(GrProcessorTe SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2, params.fColors, params.fStops, params.fColorCount, params.fTileMode); - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto dstColorSpace = GrTest::TestColorSpace(d->fRandom); - sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs( - d->fContext, &viewMatrix, NULL, kNone_SkFilterQuality, dstColorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(asFPArgs.args()); GrAlwaysAssert(fp); return fp; } @@ -939,11 +930,8 @@ sk_sp<GrFragmentProcessor> CircleInside2PtConicalEffect::TestCreate(GrProcessorT SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2, params.fColors, params.fStops, params.fColorCount, params.fTileMode); - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto dstColorSpace = GrTest::TestColorSpace(d->fRandom); - sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs( - d->fContext, &viewMatrix, NULL, kNone_SkFilterQuality, dstColorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(asFPArgs.args()); GrAlwaysAssert(fp); return fp; } @@ -1174,11 +1162,8 @@ sk_sp<GrFragmentProcessor> CircleOutside2PtConicalEffect::TestCreate(GrProcessor SkGradientShader::MakeTwoPointConical(center1, radius1, center2, radius2, params.fColors, params.fStops, params.fColorCount, params.fTileMode); - SkMatrix viewMatrix = GrTest::TestMatrix(d->fRandom); - auto dstColorSpace = GrTest::TestColorSpace(d->fRandom); - sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(SkShader::AsFPArgs( - d->fContext, &viewMatrix, NULL, kNone_SkFilterQuality, dstColorSpace.get(), - SkSourceGammaTreatment::kRespect)); + GrTest::TestAsFPArgs asFPArgs(d); + sk_sp<GrFragmentProcessor> fp = shader->asFragmentProcessor(asFPArgs.args()); GrAlwaysAssert(fp); return fp; } diff --git a/src/gpu/GrTestUtils.cpp b/src/gpu/GrTestUtils.cpp index 2aae8df375..a0a35ccf74 100644 --- a/src/gpu/GrTestUtils.cpp +++ b/src/gpu/GrTestUtils.cpp @@ -6,6 +6,7 @@ */ #include "GrTestUtils.h" +#include "GrProcessorUnitTest.h" #include "GrStyle.h" #include "SkColorSpace.h" #include "SkDashPathPriv.h" @@ -321,6 +322,19 @@ sk_sp<GrColorSpaceXform> TestColorXform(SkRandom* random) { return gXforms[random->nextULessThan(static_cast<uint32_t>(SK_ARRAY_COUNT(gXforms)))]; } +TestAsFPArgs::TestAsFPArgs(GrProcessorTestData* d) { + fViewMatrixStorage = TestMatrix(d->fRandom); + fColorSpaceStorage = TestColorSpace(d->fRandom); + + fArgs.fContext = d->fContext; + fArgs.fViewMatrix = &fViewMatrixStorage; + fArgs.fLocalMatrix = nullptr; + fArgs.fFilterQuality = kNone_SkFilterQuality; + fArgs.fDstColorSpace = fColorSpaceStorage.get(); + fArgs.fGammaTreatment = SkToBool(fArgs.fDstColorSpace) + ? SkSourceGammaTreatment::kRespect : SkSourceGammaTreatment::kIgnore; +} + } // namespace GrTest #endif |