aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2017-03-21 08:48:40 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-21 19:38:55 +0000
commitbbd7a3be407ce94fcc4f8b1eb475de8b6f49026e (patch)
tree8d2aabdf69316d15483e0af8f86d44c64a2c1a4f /experimental
parent7322b52e616a6cec2ed0e88456c4b43f944b8b69 (diff)
Make experimental Perlin noise shader take texture proxies
This is split out of: https://skia-review.googlesource.com/c/8823/ (Remove GrFragmentProcessor-derived class' GrTexture-based ctors) Change-Id: I18c444981f5c72e9688866e045c90844bc4945b1 Reviewed-on: https://skia-review.googlesource.com/9917 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'experimental')
-rw-r--r--experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp43
1 files changed, 25 insertions, 18 deletions
diff --git a/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp b/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp
index 22dc0829e4..246d34e9b6 100644
--- a/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp
+++ b/experimental/SkPerlinNoiseShader2/SkPerlinNoiseShader2.cpp
@@ -1041,14 +1041,16 @@ private:
class GrImprovedPerlinNoiseEffect : public GrFragmentProcessor {
public:
- static sk_sp<GrFragmentProcessor> Make(int octaves, SkScalar z,
+ static sk_sp<GrFragmentProcessor> Make(GrResourceProvider* resourceProvider,
+ int octaves, SkScalar z,
SkPerlinNoiseShader2::PaintingData* paintingData,
- GrTexture* permutationsTexture,
- GrTexture* gradientTexture,
+ sk_sp<GrTextureProxy> permutationsProxy,
+ sk_sp<GrTextureProxy> gradientProxy,
const SkMatrix& matrix) {
return sk_sp<GrFragmentProcessor>(
- new GrImprovedPerlinNoiseEffect(octaves, z, paintingData, permutationsTexture,
- gradientTexture, matrix));
+ new GrImprovedPerlinNoiseEffect(resourceProvider, octaves, z, paintingData,
+ std::move(permutationsProxy),
+ std::move(gradientProxy), matrix));
}
virtual ~GrImprovedPerlinNoiseEffect() { delete fPaintingData; }
@@ -1075,15 +1077,17 @@ private:
fPaintingData->fBaseFrequency == s.fPaintingData->fBaseFrequency;
}
- GrImprovedPerlinNoiseEffect(int octaves, SkScalar z,
+ GrImprovedPerlinNoiseEffect(GrResourceProvider* resourceProvider,
+ int octaves, SkScalar z,
SkPerlinNoiseShader2::PaintingData* paintingData,
- GrTexture* permutationsTexture, GrTexture* gradientTexture,
+ sk_sp<GrTextureProxy> permutationsProxy,
+ sk_sp<GrTextureProxy> gradientProxy,
const SkMatrix& matrix)
: INHERITED(kNone_OptimizationFlags)
, fOctaves(octaves)
, fZ(z)
- , fPermutationsSampler(permutationsTexture)
- , fGradientSampler(gradientTexture)
+ , fPermutationsSampler(resourceProvider, std::move(permutationsProxy))
+ , fGradientSampler(resourceProvider, std::move(gradientProxy))
, fPaintingData(paintingData) {
this->initClassID<GrImprovedPerlinNoiseEffect>();
this->addTextureSampler(&fPermutationsSampler);
@@ -1311,15 +1315,18 @@ sk_sp<GrFragmentProcessor> SkPerlinNoiseShader2::asFragmentProcessor(const AsFPA
if (fType == kImprovedNoise_Type) {
GrSamplerParams textureParams(SkShader::TileMode::kRepeat_TileMode,
GrSamplerParams::FilterMode::kNone_FilterMode);
- sk_sp<GrTexture> permutationsTexture(
- GrRefCachedBitmapTexture(args.fContext, paintingData->getImprovedPermutationsBitmap(),
- textureParams, nullptr));
- sk_sp<GrTexture> gradientTexture(
- GrRefCachedBitmapTexture(args.fContext, paintingData->getGradientBitmap(),
- textureParams, nullptr));
- return GrImprovedPerlinNoiseEffect::Make(fNumOctaves, fSeed, paintingData,
- permutationsTexture.get(),
- gradientTexture.get(), m);
+ sk_sp<GrTextureProxy> permutationsTexture(
+ GrRefCachedBitmapTextureProxy(args.fContext,
+ paintingData->getImprovedPermutationsBitmap(),
+ textureParams, nullptr));
+ sk_sp<GrTextureProxy> gradientTexture(
+ GrRefCachedBitmapTextureProxy(args.fContext,
+ paintingData->getGradientBitmap(),
+ textureParams, nullptr));
+ return GrImprovedPerlinNoiseEffect::Make(args.fContext->resourceProvider(),
+ fNumOctaves, fSeed, paintingData,
+ std::move(permutationsTexture),
+ std::move(gradientTexture), m);
}
if (0 == fNumOctaves) {