aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'src/shaders')
-rw-r--r--src/shaders/SkPerlinNoiseShader.cpp20
-rw-r--r--src/shaders/gradients/SkGradientShader.cpp5
-rw-r--r--src/shaders/gradients/SkGradientShaderPriv.h2
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)