aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp16
-rw-r--r--include/core/SkShader.h1
-rw-r--r--include/gpu/GrTestUtils.h13
-rw-r--r--src/effects/SkPerlinNoiseShader.cpp7
-rw-r--r--src/effects/gradients/SkLinearGradient.cpp7
-rw-r--r--src/effects/gradients/SkRadialGradient.cpp7
-rw-r--r--src/effects/gradients/SkSweepGradient.cpp7
-rw-r--r--src/effects/gradients/SkTwoPointConicalGradient_gpu.cpp35
-rw-r--r--src/gpu/GrTestUtils.cpp14
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