| Index: src/gpu/effects/GrBicubicEffect.h
|
| diff --git a/src/gpu/effects/GrBicubicEffect.h b/src/gpu/effects/GrBicubicEffect.h
|
| index 3c84f979191d396fb0430deac717d9c0c674675d..58bb068d5f523c60e337333df529fc86ab75377a 100644
|
| --- a/src/gpu/effects/GrBicubicEffect.h
|
| +++ b/src/gpu/effects/GrBicubicEffect.h
|
| @@ -29,19 +29,23 @@ public:
|
|
|
| const GrTextureDomain& domain() const { return fDomain; }
|
|
|
| + GrColorSpaceXform* colorSpaceXform() const { return fColorSpaceXform.get(); }
|
| +
|
| /**
|
| * Create a simple filter effect with custom bicubic coefficients and optional domain.
|
| */
|
| - static sk_sp<GrFragmentProcessor> Make(GrTexture* tex, const SkScalar coefficients[16],
|
| + static sk_sp<GrFragmentProcessor> Make(GrTexture* tex,
|
| + sk_sp<GrColorSpaceXform> colorSpaceXform,
|
| + const SkScalar coefficients[16],
|
| const SkRect* domain = nullptr) {
|
| if (nullptr == domain) {
|
| static const SkShader::TileMode kTileModes[] = { SkShader::kClamp_TileMode,
|
| SkShader::kClamp_TileMode };
|
| - return Make(tex, coefficients, GrCoordTransform::MakeDivByTextureWHMatrix(tex),
|
| - kTileModes);
|
| + return Make(tex, std::move(colorSpaceXform), coefficients,
|
| + GrCoordTransform::MakeDivByTextureWHMatrix(tex), kTileModes);
|
| } else {
|
| return sk_sp<GrFragmentProcessor>(
|
| - new GrBicubicEffect(tex, coefficients,
|
| + new GrBicubicEffect(tex, std::move(colorSpaceXform), coefficients,
|
| GrCoordTransform::MakeDivByTextureWHMatrix(tex), *domain));
|
| }
|
| }
|
| @@ -49,28 +53,35 @@ public:
|
| /**
|
| * Create a Mitchell filter effect with specified texture matrix and x/y tile modes.
|
| */
|
| - static sk_sp<GrFragmentProcessor> Make(GrTexture* tex, const SkMatrix& matrix,
|
| + static sk_sp<GrFragmentProcessor> Make(GrTexture* tex,
|
| + sk_sp<GrColorSpaceXform> colorSpaceXform,
|
| + const SkMatrix& matrix,
|
| const SkShader::TileMode tileModes[2]) {
|
| - return Make(tex, gMitchellCoefficients, matrix, tileModes);
|
| + return Make(tex, std::move(colorSpaceXform), gMitchellCoefficients, matrix, tileModes);
|
| }
|
|
|
| /**
|
| * Create a filter effect with custom bicubic coefficients, the texture matrix, and the x/y
|
| * tilemodes.
|
| */
|
| - static sk_sp<GrFragmentProcessor> Make(GrTexture* tex, const SkScalar coefficients[16],
|
| + static sk_sp<GrFragmentProcessor> Make(GrTexture* tex,
|
| + sk_sp<GrColorSpaceXform> colorSpaceXform,
|
| + const SkScalar coefficients[16],
|
| const SkMatrix& matrix,
|
| const SkShader::TileMode tileModes[2]) {
|
| - return sk_sp<GrFragmentProcessor>(new GrBicubicEffect(tex, coefficients, matrix,
|
| - tileModes));
|
| + return sk_sp<GrFragmentProcessor>(new GrBicubicEffect(tex, std::move(colorSpaceXform),
|
| + coefficients, matrix, tileModes));
|
| }
|
|
|
| /**
|
| * Create a Mitchell filter effect with a texture matrix and a domain.
|
| */
|
| - static sk_sp<GrFragmentProcessor> Make(GrTexture* tex, const SkMatrix& matrix,
|
| + static sk_sp<GrFragmentProcessor> Make(GrTexture* tex,
|
| + sk_sp<GrColorSpaceXform> colorSpaceXform,
|
| + const SkMatrix& matrix,
|
| const SkRect& domain) {
|
| - return sk_sp<GrFragmentProcessor>(new GrBicubicEffect(tex, gMitchellCoefficients, matrix,
|
| + return sk_sp<GrFragmentProcessor>(new GrBicubicEffect(tex, std::move(colorSpaceXform),
|
| + gMitchellCoefficients, matrix,
|
| domain));
|
| }
|
|
|
| @@ -85,10 +96,10 @@ public:
|
| GrTextureParams::FilterMode* filterMode);
|
|
|
| private:
|
| - GrBicubicEffect(GrTexture*, const SkScalar coefficients[16], const SkMatrix &matrix,
|
| - const SkShader::TileMode tileModes[2]);
|
| - GrBicubicEffect(GrTexture*, const SkScalar coefficients[16], const SkMatrix &matrix,
|
| - const SkRect& domain);
|
| + GrBicubicEffect(GrTexture*, sk_sp<GrColorSpaceXform>, const SkScalar coefficients[16],
|
| + const SkMatrix &matrix, const SkShader::TileMode tileModes[2]);
|
| + GrBicubicEffect(GrTexture*, sk_sp<GrColorSpaceXform>, const SkScalar coefficients[16],
|
| + const SkMatrix &matrix, const SkRect& domain);
|
|
|
| GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
|
|
|
| @@ -100,6 +111,7 @@ private:
|
|
|
| float fCoefficients[16];
|
| GrTextureDomain fDomain;
|
| + sk_sp<GrColorSpaceXform> fColorSpaceXform;
|
|
|
| GR_DECLARE_FRAGMENT_PROCESSOR_TEST;
|
|
|
|
|