aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/SkPerlinNoiseShader.cpp
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2017-02-18 15:15:51 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-18 20:55:51 +0000
commit6f9f7ebb74f49a3b641421fd368d8101e81dd05e (patch)
treeff4f60366fb41ff6a6569c97c3897ed9bf5ee96b /src/effects/SkPerlinNoiseShader.cpp
parent7f302c4682f5d6eb9dc61f1fb1d12e1079024f70 (diff)
Expand use of GrMakeCachedBitmapProxy (take 2)
Reland of https://skia-review.googlesource.com/c/8666/ (Expand use of GrMakeCachedBitmapProxy) with a fix for the non-GPU build Change-Id: I91d1658139b895b94e04d3f486e56b76bc6d184a Reviewed-on: https://skia-review.googlesource.com/8700 Reviewed-by: Robert Phillips <robertphillips@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/effects/SkPerlinNoiseShader.cpp')
-rw-r--r--src/effects/SkPerlinNoiseShader.cpp39
1 files changed, 22 insertions, 17 deletions
diff --git a/src/effects/SkPerlinNoiseShader.cpp b/src/effects/SkPerlinNoiseShader.cpp
index b67fb34692..5f8fe32f08 100644
--- a/src/effects/SkPerlinNoiseShader.cpp
+++ b/src/effects/SkPerlinNoiseShader.cpp
@@ -19,6 +19,7 @@
#include "GrContext.h"
#include "GrCoordTransform.h"
#include "SkGr.h"
+#include "SkGrPriv.h"
#include "effects/GrConstColorProcessor.h"
#include "glsl/GrGLSLFragmentProcessor.h"
#include "glsl/GrGLSLFragmentShaderBuilder.h"
@@ -485,14 +486,16 @@ private:
class GrPerlinNoiseEffect : public GrFragmentProcessor {
public:
- static sk_sp<GrFragmentProcessor> Make(SkPerlinNoiseShader::Type type,
+ static sk_sp<GrFragmentProcessor> Make(GrTextureProvider* textureProvider,
+ SkPerlinNoiseShader::Type type,
int numOctaves, bool stitchTiles,
SkPerlinNoiseShader::PaintingData* paintingData,
- GrTexture* permutationsTexture, GrTexture* noiseTexture,
+ sk_sp<GrTextureProxy> permutationsProxy,
+ sk_sp<GrTextureProxy> noiseProxy,
const SkMatrix& matrix) {
return sk_sp<GrFragmentProcessor>(
- new GrPerlinNoiseEffect(type, numOctaves, stitchTiles, paintingData,
- permutationsTexture, noiseTexture, matrix));
+ new GrPerlinNoiseEffect(textureProvider, type, numOctaves, stitchTiles, paintingData,
+ std::move(permutationsProxy), std::move(noiseProxy), matrix));
}
virtual ~GrPerlinNoiseEffect() { delete fPaintingData; }
@@ -525,17 +528,18 @@ private:
fPaintingData->fStitchDataInit == s.fPaintingData->fStitchDataInit;
}
- GrPerlinNoiseEffect(SkPerlinNoiseShader::Type type, int numOctaves, bool stitchTiles,
+ GrPerlinNoiseEffect(GrTextureProvider* textureProvider,
+ SkPerlinNoiseShader::Type type, int numOctaves, bool stitchTiles,
SkPerlinNoiseShader::PaintingData* paintingData,
- GrTexture* permutationsTexture, GrTexture* noiseTexture,
+ sk_sp<GrTextureProxy> permutationsProxy, sk_sp<GrTextureProxy> noiseProxy,
const SkMatrix& matrix)
: INHERITED(kNone_OptimizationFlags)
, fType(type)
, fCoordTransform(matrix)
, fNumOctaves(numOctaves)
, fStitchTiles(stitchTiles)
- , fPermutationsSampler(permutationsTexture)
- , fNoiseSampler(noiseTexture)
+ , fPermutationsSampler(textureProvider, std::move(permutationsProxy))
+ , fNoiseSampler(textureProvider, std::move(noiseProxy))
, fPaintingData(paintingData) {
this->initClassID<GrPerlinNoiseEffect>();
this->addTextureSampler(&fPermutationsSampler);
@@ -911,23 +915,24 @@ sk_sp<GrFragmentProcessor> SkPerlinNoiseShader::asFragmentProcessor(const AsFPAr
SkPerlinNoiseShader::PaintingData* paintingData =
new PaintingData(fTileSize, fSeed, fBaseFrequencyX, fBaseFrequencyY, matrix);
- sk_sp<GrTexture> permutationsTexture(
- GrRefCachedBitmapTexture(args.fContext, paintingData->getPermutationsBitmap(),
- GrSamplerParams::ClampNoFilter(), nullptr));
- sk_sp<GrTexture> noiseTexture(
- GrRefCachedBitmapTexture(args.fContext, paintingData->getNoiseBitmap(),
- GrSamplerParams::ClampNoFilter(), nullptr));
+ sk_sp<GrTextureProxy> permutationsProxy(GrMakeCachedBitmapProxy(
+ args.fContext,
+ paintingData->getPermutationsBitmap()));
+ sk_sp<GrTextureProxy> noiseProxy(GrMakeCachedBitmapProxy(args.fContext,
+ paintingData->getNoiseBitmap()));
SkMatrix m = *args.fViewMatrix;
m.setTranslateX(-localMatrix.getTranslateX() + SK_Scalar1);
m.setTranslateY(-localMatrix.getTranslateY() + SK_Scalar1);
- if ((permutationsTexture) && (noiseTexture)) {
+ if (permutationsProxy && noiseProxy) {
sk_sp<GrFragmentProcessor> inner(
- GrPerlinNoiseEffect::Make(fType,
+ GrPerlinNoiseEffect::Make(args.fContext->textureProvider(),
+ fType,
fNumOctaves,
fStitchTiles,
paintingData,
- permutationsTexture.get(), noiseTexture.get(),
+ std::move(permutationsProxy),
+ std::move(noiseProxy),
m));
return GrFragmentProcessor::MulOutputByInputAlpha(std::move(inner));
}