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) {
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) {
#if SK_SUPPORT_GPU
struct AsFPArgs {
+ AsFPArgs() {}
AsFPArgs(GrContext* context,
const SkMatrix* viewMatrix,
const SkMatrix* localMatrix,
#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;
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 {
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) {
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
*/
#include "GrTestUtils.h"
+#include "GrProcessorUnitTest.h"
#include "GrStyle.h"
#include "SkColorSpace.h"
#include "SkDashPathPriv.h"
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