diff options
Diffstat (limited to 'src/effects/SkPerlinNoiseShader.cpp')
-rw-r--r-- | src/effects/SkPerlinNoiseShader.cpp | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/src/effects/SkPerlinNoiseShader.cpp b/src/effects/SkPerlinNoiseShader.cpp index 5f8fe32f08..b67fb34692 100644 --- a/src/effects/SkPerlinNoiseShader.cpp +++ b/src/effects/SkPerlinNoiseShader.cpp @@ -19,7 +19,6 @@ #include "GrContext.h" #include "GrCoordTransform.h" #include "SkGr.h" -#include "SkGrPriv.h" #include "effects/GrConstColorProcessor.h" #include "glsl/GrGLSLFragmentProcessor.h" #include "glsl/GrGLSLFragmentShaderBuilder.h" @@ -486,16 +485,14 @@ private: class GrPerlinNoiseEffect : public GrFragmentProcessor { public: - static sk_sp<GrFragmentProcessor> Make(GrTextureProvider* textureProvider, - SkPerlinNoiseShader::Type type, + static sk_sp<GrFragmentProcessor> Make(SkPerlinNoiseShader::Type type, int numOctaves, bool stitchTiles, SkPerlinNoiseShader::PaintingData* paintingData, - sk_sp<GrTextureProxy> permutationsProxy, - sk_sp<GrTextureProxy> noiseProxy, + GrTexture* permutationsTexture, GrTexture* noiseTexture, const SkMatrix& matrix) { return sk_sp<GrFragmentProcessor>( - new GrPerlinNoiseEffect(textureProvider, type, numOctaves, stitchTiles, paintingData, - std::move(permutationsProxy), std::move(noiseProxy), matrix)); + new GrPerlinNoiseEffect(type, numOctaves, stitchTiles, paintingData, + permutationsTexture, noiseTexture, matrix)); } virtual ~GrPerlinNoiseEffect() { delete fPaintingData; } @@ -528,18 +525,17 @@ private: fPaintingData->fStitchDataInit == s.fPaintingData->fStitchDataInit; } - GrPerlinNoiseEffect(GrTextureProvider* textureProvider, - SkPerlinNoiseShader::Type type, int numOctaves, bool stitchTiles, + GrPerlinNoiseEffect(SkPerlinNoiseShader::Type type, int numOctaves, bool stitchTiles, SkPerlinNoiseShader::PaintingData* paintingData, - sk_sp<GrTextureProxy> permutationsProxy, sk_sp<GrTextureProxy> noiseProxy, + GrTexture* permutationsTexture, GrTexture* noiseTexture, const SkMatrix& matrix) : INHERITED(kNone_OptimizationFlags) , fType(type) , fCoordTransform(matrix) , fNumOctaves(numOctaves) , fStitchTiles(stitchTiles) - , fPermutationsSampler(textureProvider, std::move(permutationsProxy)) - , fNoiseSampler(textureProvider, std::move(noiseProxy)) + , fPermutationsSampler(permutationsTexture) + , fNoiseSampler(noiseTexture) , fPaintingData(paintingData) { this->initClassID<GrPerlinNoiseEffect>(); this->addTextureSampler(&fPermutationsSampler); @@ -915,24 +911,23 @@ sk_sp<GrFragmentProcessor> SkPerlinNoiseShader::asFragmentProcessor(const AsFPAr SkPerlinNoiseShader::PaintingData* paintingData = new PaintingData(fTileSize, fSeed, fBaseFrequencyX, fBaseFrequencyY, matrix); - sk_sp<GrTextureProxy> permutationsProxy(GrMakeCachedBitmapProxy( - args.fContext, - paintingData->getPermutationsBitmap())); - sk_sp<GrTextureProxy> noiseProxy(GrMakeCachedBitmapProxy(args.fContext, - paintingData->getNoiseBitmap())); + sk_sp<GrTexture> permutationsTexture( + GrRefCachedBitmapTexture(args.fContext, paintingData->getPermutationsBitmap(), + GrSamplerParams::ClampNoFilter(), nullptr)); + sk_sp<GrTexture> noiseTexture( + GrRefCachedBitmapTexture(args.fContext, paintingData->getNoiseBitmap(), + GrSamplerParams::ClampNoFilter(), nullptr)); SkMatrix m = *args.fViewMatrix; m.setTranslateX(-localMatrix.getTranslateX() + SK_Scalar1); m.setTranslateY(-localMatrix.getTranslateY() + SK_Scalar1); - if (permutationsProxy && noiseProxy) { + if ((permutationsTexture) && (noiseTexture)) { sk_sp<GrFragmentProcessor> inner( - GrPerlinNoiseEffect::Make(args.fContext->textureProvider(), - fType, + GrPerlinNoiseEffect::Make(fType, fNumOctaves, fStitchTiles, paintingData, - std::move(permutationsProxy), - std::move(noiseProxy), + permutationsTexture.get(), noiseTexture.get(), m)); return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner)); } |