diff options
Diffstat (limited to 'src/shaders')
-rw-r--r-- | src/shaders/SkPerlinNoiseShader.cpp | 20 | ||||
-rw-r--r-- | src/shaders/gradients/SkGradientShader.cpp | 5 | ||||
-rw-r--r-- | src/shaders/gradients/SkGradientShaderPriv.h | 2 |
3 files changed, 16 insertions, 11 deletions
diff --git a/src/shaders/SkPerlinNoiseShader.cpp b/src/shaders/SkPerlinNoiseShader.cpp index 4bc44a6eef..0fc11a3055 100644 --- a/src/shaders/SkPerlinNoiseShader.cpp +++ b/src/shaders/SkPerlinNoiseShader.cpp @@ -764,8 +764,7 @@ private: , fPermutationsSampler(std::move(permutationsProxy)) , fNoiseSampler(std::move(noiseProxy)) , fPaintingData(std::move(paintingData)) { - this->addTextureSampler(&fPermutationsSampler); - this->addTextureSampler(&fNoiseSampler); + this->setTextureSamplerCnt(2); fCoordTransform.reset(matrix); this->addCoordTransform(&fCoordTransform); } @@ -779,11 +778,14 @@ private: , fPermutationsSampler(that.fPermutationsSampler) , fNoiseSampler(that.fNoiseSampler) , fPaintingData(new SkPerlinNoiseShaderImpl::PaintingData(*that.fPaintingData)) { - this->addTextureSampler(&fPermutationsSampler); - this->addTextureSampler(&fNoiseSampler); + this->setTextureSamplerCnt(2); this->addCoordTransform(&fCoordTransform); } + const TextureSampler& onTextureSampler(int i) const override { + return IthTextureSampler(i, fPermutationsSampler, fNoiseSampler); + } + GR_DECLARE_FRAGMENT_PROCESSOR_TEST SkPerlinNoiseShaderImpl::Type fType; @@ -1185,8 +1187,7 @@ private: , fPermutationsSampler(std::move(permutationsProxy)) , fGradientSampler(std::move(gradientProxy)) , fPaintingData(std::move(paintingData)) { - this->addTextureSampler(&fPermutationsSampler); - this->addTextureSampler(&fGradientSampler); + this->setTextureSamplerCnt(2); fCoordTransform.reset(matrix); this->addCoordTransform(&fCoordTransform); } @@ -1199,11 +1200,14 @@ private: , fPermutationsSampler(that.fPermutationsSampler) , fGradientSampler(that.fGradientSampler) , fPaintingData(new SkPerlinNoiseShaderImpl::PaintingData(*that.fPaintingData)) { - this->addTextureSampler(&fPermutationsSampler); - this->addTextureSampler(&fGradientSampler); + this->setTextureSamplerCnt(2); this->addCoordTransform(&fCoordTransform); } + const TextureSampler& onTextureSampler(int i) const override { + return IthTextureSampler(i, fPermutationsSampler, fGradientSampler); + } + GR_DECLARE_FRAGMENT_PROCESSOR_TEST GrCoordTransform fCoordTransform; diff --git a/src/shaders/gradients/SkGradientShader.cpp b/src/shaders/gradients/SkGradientShader.cpp index 8536dd82eb..aa44ae6f3a 100644 --- a/src/shaders/gradients/SkGradientShader.cpp +++ b/src/shaders/gradients/SkGradientShader.cpp @@ -1294,8 +1294,7 @@ GrGradientEffect::GrGradientEffect(ClassID classID, const CreateArgs& args, bool fTextureSampler.reset(std::move(proxy), samplerState); fYCoord = SK_ScalarHalf; } - - this->addTextureSampler(&fTextureSampler); + this->setTextureSamplerCnt(1); } this->addCoordTransform(&fCoordTransform); @@ -1316,7 +1315,7 @@ GrGradientEffect::GrGradientEffect(const GrGradientEffect& that) , fPremulType(that.fPremulType) { this->addCoordTransform(&fCoordTransform); if (fStrategy == InterpolationStrategy::kTexture) { - this->addTextureSampler(&fTextureSampler); + this->setTextureSamplerCnt(1); } if (this->useAtlas()) { fAtlas->lockRow(fRow); diff --git a/src/shaders/gradients/SkGradientShaderPriv.h b/src/shaders/gradients/SkGradientShaderPriv.h index 0f3e73603a..6aa5da2457 100644 --- a/src/shaders/gradients/SkGradientShaderPriv.h +++ b/src/shaders/gradients/SkGradientShaderPriv.h @@ -302,6 +302,8 @@ private: void addInterval(const SkGradientShaderBase&, const SkColor4f* colors, size_t idx0, size_t idx1); + const TextureSampler& onTextureSampler(int i) const override { return fTextureSampler; } + static OptimizationFlags OptFlags(bool isOpaque); // Interpolation intervals, encoded as 4f tuples of (scale, bias) |