Update GrPaint APIs to reflect lack of multiple color processors.
Change-Id: Ic7799b3c5f4294cba9ff72f8c11a2ad285ab189f
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/304738
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/gm/fp_sample_chaining.cpp b/gm/fp_sample_chaining.cpp
index 461c45c..b2cb7a5 100644
--- a/gm/fp_sample_chaining.cpp
+++ b/gm/fp_sample_chaining.cpp
@@ -235,7 +235,7 @@
fp = wrap(std::move(fp), effectType);
}
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
rtCtx->drawRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::Translate(x, y),
SkRect::MakeIWH(64, 64));
nextCol();
diff --git a/gm/gpu_blur_utils.cpp b/gm/gpu_blur_utils.cpp
index c0f308b..6ab6ed1 100644
--- a/gm/gpu_blur_utils.cpp
+++ b/gm/gpu_blur_utils.cpp
@@ -160,7 +160,7 @@
fp = GrFragmentProcessor::ModulateRGBA(std::move(fp),
{kAlpha, kAlpha, kAlpha, kAlpha});
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
rtc->drawRect(nullptr, std::move(paint), GrAA::kNo, m, SkRect::Make(testArea));
}
// If we're in ref mode we will create a temp image that has the original image
@@ -181,7 +181,7 @@
auto fp = GrTextureEffect::MakeSubset(src, kPremul_SkAlphaType, tm, sampler,
SkRect::Make(srcRect), caps);
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
refSrc->drawRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
SkRect::Make(refRect.size()));
}
@@ -215,7 +215,7 @@
// (SkBlendMode::kSrc).
fp = GrXfermodeFragmentProcessor::Make(std::move(fp), /*dst=*/nullptr,
SkBlendMode::kSrcOver);
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
rtc->fillRectToRect(nullptr, std::move(paint), GrAA::kNo, m,
SkRect::Make(dstRect), SkRect::Make(blurView.dimensions()));
diff --git a/gm/sample_matrix_constant.cpp b/gm/sample_matrix_constant.cpp
index f87b3a4..409ff1d 100644
--- a/gm/sample_matrix_constant.cpp
+++ b/gm/sample_matrix_constant.cpp
@@ -63,14 +63,14 @@
auto draw = [rtCtx, &wrap](std::unique_ptr<GrFragmentProcessor> baseFP, int tx, int ty) {
auto fp = wrap(std::move(baseFP));
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
rtCtx->drawRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::Translate(tx, ty),
SkRect::MakeIWH(256, 256));
};
auto draw2 = [rtCtx, &wrap](std::unique_ptr<GrFragmentProcessor> baseFP, int tx, int ty) {
auto fp = wrap(wrap(std::move(baseFP)));
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
rtCtx->drawRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::Translate(tx, ty),
SkRect::MakeIWH(256, 256));
};
diff --git a/gm/sample_matrix_variable.cpp b/gm/sample_matrix_variable.cpp
index 84a34ab..9f2ab18 100644
--- a/gm/sample_matrix_variable.cpp
+++ b/gm/sample_matrix_variable.cpp
@@ -73,7 +73,7 @@
auto fp = std::unique_ptr<GrFragmentProcessor>(
new SampleMatrixVariableEffect(std::move(baseFP), ofsX, ofsY));
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
rtCtx->drawRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::Translate(tx, ty),
SkRect::MakeIWH(256, 256));
};
diff --git a/gm/swizzle.cpp b/gm/swizzle.cpp
index 62cb0a5..0dae779 100644
--- a/gm/swizzle.cpp
+++ b/gm/swizzle.cpp
@@ -35,7 +35,7 @@
auto fp = GrFragmentProcessor::SwizzleOutput(std::move(imgFP), GrSwizzle("grb1"));
GrPaint grPaint;
- grPaint.addColorFragmentProcessor(std::move(fp));
+ grPaint.setColorFragmentProcessor(std::move(fp));
rtCtx->priv().testingOnly_addDrawOp(
GrFillRectOp::MakeNonAARect(ctx, std::move(grPaint), SkMatrix(), bounds));
diff --git a/gm/yuvtorgbeffect.cpp b/gm/yuvtorgbeffect.cpp
index 24ed674..7f5c81d 100644
--- a/gm/yuvtorgbeffect.cpp
+++ b/gm/yuvtorgbeffect.cpp
@@ -129,7 +129,7 @@
if (fp) {
GrPaint grPaint;
grPaint.setXPFactory(GrPorterDuffXPFactory::Get(SkBlendMode::kSrc));
- grPaint.addColorFragmentProcessor(std::move(fp));
+ grPaint.setColorFragmentProcessor(std::move(fp));
SkMatrix viewMatrix;
viewMatrix.setTranslate(x, y);
renderTargetContext->priv().testingOnly_addDrawOp(
@@ -244,7 +244,7 @@
if (fp) {
SkMatrix viewMatrix;
viewMatrix.setTranslate(x, y);
- grPaint.addColorFragmentProcessor(std::move(fp));
+ grPaint.setColorFragmentProcessor(std::move(fp));
std::unique_ptr<GrDrawOp> op(GrFillRectOp::MakeNonAARect(
context, std::move(grPaint), viewMatrix, renderRect));
renderTargetContext->priv().testingOnly_addDrawOp(std::move(op));
@@ -362,7 +362,7 @@
samplerState, caps, SkMatrix::I(), subset));
if (fp) {
GrPaint grPaint;
- grPaint.addColorFragmentProcessor(std::move(fp));
+ grPaint.setColorFragmentProcessor(std::move(fp));
renderTargetContext->drawRect(
nullptr, std::move(grPaint), GrAA::kYes, ctm, rect);
}
diff --git a/samplecode/SampleCCPRGeometry.cpp b/samplecode/SampleCCPRGeometry.cpp
index d87c6a9..0aa8100 100644
--- a/samplecode/SampleCCPRGeometry.cpp
+++ b/samplecode/SampleCCPRGeometry.cpp
@@ -217,7 +217,7 @@
// Visualize coverage count in main canvas.
GrPaint paint;
- paint.addColorFragmentProcessor(VisualizeCoverageCountFP::Make(
+ paint.setColorFragmentProcessor(VisualizeCoverageCountFP::Make(
GrTextureEffect::Make(ccbuff->readSurfaceView(), ccbuff->colorInfo().alphaType())));
paint.setPorterDuffXPFactory(SkBlendMode::kSrcOver);
rtc->drawRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
diff --git a/src/core/SkGpuBlurUtils.cpp b/src/core/SkGpuBlurUtils.cpp
index 10fa9ff..50ffe23 100644
--- a/src/core/SkGpuBlurUtils.cpp
+++ b/src/core/SkGpuBlurUtils.cpp
@@ -49,7 +49,7 @@
std::unique_ptr<GrFragmentProcessor> conv(GrGaussianConvolutionFragmentProcessor::Make(
std::move(srcView), srcAlphaType, direction, radius, sigma, wm, srcSubset, &srcRect,
*renderTargetContext->caps()));
- paint.addColorFragmentProcessor(std::move(conv));
+ paint.setColorFragmentProcessor(std::move(conv));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
renderTargetContext->fillRectToRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
SkRect::Make(rtcRect), SkRect::Make(srcRect));
@@ -82,7 +82,7 @@
size, 1.0, 0.0, kernelOffset, wm, true,
sigmaX, sigmaY,
*renderTargetContext->caps());
- paint.addColorFragmentProcessor(std::move(conv));
+ paint.setColorFragmentProcessor(std::move(conv));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
// 'dstBounds' is actually in 'srcView' proxy space. It represents the blurred area from src
@@ -268,7 +268,7 @@
auto fp = GrTextureEffect::MakeSubset(std::move(srcView), srcAlphaType, SkMatrix::I(),
GrSamplerState::Filter::kLinear, srcBounds, srcBounds,
*context->priv().caps());
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
dstRenderTargetContext->fillRectToRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
@@ -475,7 +475,7 @@
sampler, SkRect::Make(srcBounds),
SkRect::Make(dstBounds), *context->priv().caps());
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
result->drawRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
SkRect::Make(dstBounds.size()));
return result;
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp
index dc61af0..11bbd36 100644
--- a/src/core/SkImageFilter.cpp
+++ b/src/core/SkImageFilter.cpp
@@ -565,7 +565,7 @@
const SkColorSpace* colorSpace,
GrProtected isProtected) {
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
auto renderTargetContext = GrRenderTargetContext::Make(
diff --git a/src/core/SkLegacyGpuBlurUtils.cpp b/src/core/SkLegacyGpuBlurUtils.cpp
index 1ce4010..ec1655e 100644
--- a/src/core/SkLegacyGpuBlurUtils.cpp
+++ b/src/core/SkLegacyGpuBlurUtils.cpp
@@ -96,7 +96,7 @@
std::unique_ptr<GrFragmentProcessor> conv(GrGaussianConvolutionFragmentProcessor::Make(
std::move(srcView), srcAlphaType, direction, radius, sigma, wm, subset, nullptr,
*renderTargetContext->caps()));
- paint.addColorFragmentProcessor(std::move(conv));
+ paint.setColorFragmentProcessor(std::move(conv));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
auto srcRect = SkRect::Make(rtcRect.makeOffset(rtcToSrcOffset));
renderTargetContext->fillRectToRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
@@ -130,7 +130,7 @@
size, 1.0, 0.0, kernelOffset, wm, true,
sigmaX, sigmaY,
*renderTargetContext->caps());
- paint.addColorFragmentProcessor(std::move(conv));
+ paint.setColorFragmentProcessor(std::move(conv));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
// 'dstBounds' is actually in 'srcView' proxy space. It represents the blurred area from src
@@ -313,7 +313,7 @@
fp = GrTextureEffect::Make(std::move(srcView), srcAlphaType, SkMatrix::I(),
GrSamplerState::Filter::kLinear);
}
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
dstRenderTargetContext->fillRectToRect(nullptr, std::move(paint), GrAA::kNo,
@@ -370,7 +370,7 @@
auto fp = GrTextureEffect::MakeSubset(std::move(srcView), srcAlphaType, SkMatrix::I(),
GrSamplerState::Filter::kLinear, SkRect::Make(srcBounds),
caps);
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
// TODO: using dstII as dstRect results in some image diffs - why?
diff --git a/src/effects/imagefilters/SkArithmeticImageFilter.cpp b/src/effects/imagefilters/SkArithmeticImageFilter.cpp
index 067519f..f8af270 100644
--- a/src/effects/imagefilters/SkArithmeticImageFilter.cpp
+++ b/src/effects/imagefilters/SkArithmeticImageFilter.cpp
@@ -361,10 +361,10 @@
fgFP = GrColorSpaceXformEffect::Make(std::move(fgFP),
foreground->getColorSpace(), foreground->alphaType(),
ctx.colorSpace(), kPremul_SkAlphaType);
- paint.addColorFragmentProcessor(
+ paint.setColorFragmentProcessor(
GrArithmeticProcessor::Make(std::move(fgFP), std::move(bgFP), fInputs));
} else {
- paint.addColorFragmentProcessor(std::move(bgFP));
+ paint.setColorFragmentProcessor(std::move(bgFP));
}
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
diff --git a/src/effects/imagefilters/SkDisplacementMapEffect.cpp b/src/effects/imagefilters/SkDisplacementMapEffect.cpp
index bef906e..b33a0d4 100644
--- a/src/effects/imagefilters/SkDisplacementMapEffect.cpp
+++ b/src/effects/imagefilters/SkDisplacementMapEffect.cpp
@@ -342,7 +342,7 @@
ctx.colorSpace(), kPremul_SkAlphaType);
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
SkMatrix matrix;
matrix.setTranslate(-SkIntToScalar(colorBounds.x()), -SkIntToScalar(colorBounds.y()));
diff --git a/src/effects/imagefilters/SkLightingImageFilter.cpp b/src/effects/imagefilters/SkLightingImageFilter.cpp
index 31f6848..29c631b 100644
--- a/src/effects/imagefilters/SkLightingImageFilter.cpp
+++ b/src/effects/imagefilters/SkLightingImageFilter.cpp
@@ -467,7 +467,7 @@
GrPaint paint;
auto fp = this->makeFragmentProcessor(std::move(srcView), matrix, srcBounds, boundaryMode,
*renderTargetContext->caps());
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
renderTargetContext->fillRectToRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
dstRect, srcRect);
diff --git a/src/effects/imagefilters/SkMorphologyImageFilter.cpp b/src/effects/imagefilters/SkMorphologyImageFilter.cpp
index 143bc83..24401f3 100644
--- a/src/effects/imagefilters/SkMorphologyImageFilter.cpp
+++ b/src/effects/imagefilters/SkMorphologyImageFilter.cpp
@@ -372,7 +372,7 @@
const float range[2],
MorphDirection direction) {
GrPaint paint;
- paint.addColorFragmentProcessor(GrMorphologyEffect::Make(/*inputFP=*/nullptr, std::move(view),
+ paint.setColorFragmentProcessor(GrMorphologyEffect::Make(/*inputFP=*/nullptr, std::move(view),
srcAlphaType, direction, radius,
morphType, range));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
@@ -390,7 +390,7 @@
MorphType morphType,
MorphDirection direction) {
GrPaint paint;
- paint.addColorFragmentProcessor(GrMorphologyEffect::Make(
+ paint.setColorFragmentProcessor(GrMorphologyEffect::Make(
/*inputFP=*/nullptr, std::move(view), srcAlphaType, direction, radius, morphType));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
renderTargetContext->fillRectToRect(/*clip=*/nullptr, std::move(paint), GrAA::kNo,
diff --git a/src/effects/imagefilters/SkXfermodeImageFilter.cpp b/src/effects/imagefilters/SkXfermodeImageFilter.cpp
index ea282d8..4b7779a 100644
--- a/src/effects/imagefilters/SkXfermodeImageFilter.cpp
+++ b/src/effects/imagefilters/SkXfermodeImageFilter.cpp
@@ -284,7 +284,7 @@
fp = GrXfermodeFragmentProcessor::Make(std::move(fgFP), std::move(fp), fMode);
}
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
auto renderTargetContext = GrRenderTargetContext::Make(
diff --git a/src/gpu/GrFragmentProcessor.cpp b/src/gpu/GrFragmentProcessor.cpp
index 6c2ec99..ad071b9 100644
--- a/src/gpu/GrFragmentProcessor.cpp
+++ b/src/gpu/GrFragmentProcessor.cpp
@@ -484,8 +484,8 @@
for (int i = paint.numCoverageFragmentProcessors() - 1; i >= 0; --i) {
fFPStack.push_back(paint.getCoverageFragmentProcessor(i));
}
- for (int i = paint.numColorFragmentProcessors() - 1; i >= 0; --i) {
- fFPStack.push_back(paint.getColorFragmentProcessor(i));
+ if (paint.hasColorFragmentProcessor()) {
+ fFPStack.push_back(paint.getColorFragmentProcessor());
}
}
diff --git a/src/gpu/GrPaint.cpp b/src/gpu/GrPaint.cpp
index 9c02c7e..724c1be 100644
--- a/src/gpu/GrPaint.cpp
+++ b/src/gpu/GrPaint.cpp
@@ -43,7 +43,7 @@
*constantColor = SK_PMColor4fTRANSPARENT;
return true;
}
- if (this->numColorFragmentProcessors()) {
+ if (this->hasColorFragmentProcessor()) {
return false;
}
if (kSrc == fXPFactory || (!fXPFactory && fColor.isOpaque())) {
diff --git a/src/gpu/GrPaint.h b/src/gpu/GrPaint.h
index fade312..d5cce58 100644
--- a/src/gpu/GrPaint.h
+++ b/src/gpu/GrPaint.h
@@ -60,9 +60,9 @@
void setCoverageSetOpXPFactory(SkRegion::Op, bool invertCoverage = false);
/**
- * Appends an additional color processor to the color computation.
+ * Sets a processor for color computation.
*/
- void addColorFragmentProcessor(std::unique_ptr<GrFragmentProcessor> fp) {
+ void setColorFragmentProcessor(std::unique_ptr<GrFragmentProcessor> fp) {
SkASSERT(fp);
SkASSERT(fColorFragmentProcessor == nullptr);
fColorFragmentProcessor = std::move(fp);
@@ -78,16 +78,15 @@
fTrivial = false;
}
- int numColorFragmentProcessors() const { return fColorFragmentProcessor ? 1 : 0; }
+ bool hasColorFragmentProcessor() const { return fColorFragmentProcessor ? true : false; }
int numCoverageFragmentProcessors() const { return fCoverageFragmentProcessors.count(); }
- int numTotalFragmentProcessors() const { return this->numColorFragmentProcessors() +
- this->numCoverageFragmentProcessors(); }
+ int numTotalFragmentProcessors() const {
+ return (this->hasColorFragmentProcessor() ? 1 : 0) + this->numCoverageFragmentProcessors();
+ }
const GrXPFactory* getXPFactory() const { return fXPFactory; }
- GrFragmentProcessor* getColorFragmentProcessor(int i) const {
- SkASSERT(i == 0);
- SkASSERT(fColorFragmentProcessor != nullptr);
+ GrFragmentProcessor* getColorFragmentProcessor() const {
return fColorFragmentProcessor.get();
}
GrFragmentProcessor* getCoverageFragmentProcessor(int i) const {
diff --git a/src/gpu/GrProcessorSet.cpp b/src/gpu/GrProcessorSet.cpp
index e0c9a3f..8a0f595 100644
--- a/src/gpu/GrProcessorSet.cpp
+++ b/src/gpu/GrProcessorSet.cpp
@@ -24,21 +24,18 @@
GrProcessorSet::GrProcessorSet(GrPaint&& paint) : fXP(paint.getXPFactory()) {
fFlags = 0;
- if (paint.numColorFragmentProcessors() <= kMaxColorProcessors) {
- fColorFragmentProcessorCnt = paint.numColorFragmentProcessors();
- fFragmentProcessors.reset(paint.numTotalFragmentProcessors());
- int i = 0;
- if (paint.fColorFragmentProcessor) {
- fFragmentProcessors[i++] = std::move(paint.fColorFragmentProcessor);
- }
- for (auto& fp : paint.fCoverageFragmentProcessors) {
- SkASSERT(fp.get());
- fFragmentProcessors[i++] = std::move(fp);
- }
- } else {
- SkDEBUGFAIL("Multiple color fragment processors in paint. Dropping all processors.");
- fColorFragmentProcessorCnt = 0;
+ fColorFragmentProcessorCnt = paint.hasColorFragmentProcessor() ? 1 : 0;
+ fFragmentProcessors.reset(paint.numTotalFragmentProcessors());
+
+ int i = 0;
+ if (paint.fColorFragmentProcessor) {
+ fFragmentProcessors[i++] = std::move(paint.fColorFragmentProcessor);
}
+ for (auto& fp : paint.fCoverageFragmentProcessors) {
+ SkASSERT(fp.get());
+ fFragmentProcessors[i++] = std::move(fp);
+ }
+
SkDEBUGCODE(paint.fAlive = false;)
}
diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp
index f439030..560c0d2 100644
--- a/src/gpu/GrRenderTargetContext.cpp
+++ b/src/gpu/GrRenderTargetContext.cpp
@@ -2119,7 +2119,7 @@
if (!fp) {
return false;
}
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
this->fillRectToRect(
nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
diff --git a/src/gpu/GrSurfaceContext.cpp b/src/gpu/GrSurfaceContext.cpp
index 25b95b0..e325eef 100644
--- a/src/gpu/GrSurfaceContext.cpp
+++ b/src/gpu/GrSurfaceContext.cpp
@@ -238,7 +238,7 @@
}
GrPaint paint;
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
tempCtx->asRenderTargetContext()->fillRectToRect(
nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
@@ -425,7 +425,7 @@
}
GrPaint paint;
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
this->asRenderTargetContext()->fillRectToRect(
nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
SkRect::MakeXYWH(pt.fX, pt.fY, srcInfo.width(), srcInfo.height()),
@@ -849,7 +849,7 @@
/*unpremulInput=*/false,
/*clampRGBOutput=*/true,
/*premulOutput=*/false);
- yPaint.addColorFragmentProcessor(std::move(yColFP));
+ yPaint.setColorFragmentProcessor(std::move(yColFP));
yPaint.setPorterDuffXPFactory(SkBlendMode::kSrc);
yRTC->fillRectToRect(nullptr, std::move(yPaint), GrAA::kNo, SkMatrix::I(), dstRectY, dstRectY);
if (!doSynchronousRead) {
@@ -873,7 +873,7 @@
/*unpremulInput=*/false,
/*clampRGBOutput=*/true,
/*premulOutput=*/false);
- uPaint.addColorFragmentProcessor(std::move(uColFP));
+ uPaint.setColorFragmentProcessor(std::move(uColFP));
uPaint.setPorterDuffXPFactory(SkBlendMode::kSrc);
uRTC->fillRectToRect(nullptr, std::move(uPaint), GrAA::kNo, SkMatrix::I(), dstRectUV,
dstRectUV);
@@ -897,7 +897,7 @@
/*unpremulInput=*/false,
/*clampRGBOutput=*/true,
/*premulOutput=*/false);
- vPaint.addColorFragmentProcessor(std::move(vColFP));
+ vPaint.setColorFragmentProcessor(std::move(vColFP));
vPaint.setPorterDuffXPFactory(SkBlendMode::kSrc);
vRTC->fillRectToRect(nullptr, std::move(vPaint), GrAA::kNo, SkMatrix::I(), dstRectUV,
dstRectUV);
@@ -1123,7 +1123,7 @@
fp = GrColorSpaceXformEffect::Make(std::move(fp), std::move(xform));
}
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
tempB->fillRectToRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(), dstRect,
dstRect);
diff --git a/src/gpu/GrYUVProvider.cpp b/src/gpu/GrYUVProvider.cpp
index 14b177c..ca7dc6b 100644
--- a/src/gpu/GrYUVProvider.cpp
+++ b/src/gpu/GrYUVProvider.cpp
@@ -181,7 +181,7 @@
GrColorSpaceXformEffect::Make(std::move(yuvToRgbProcessor),
srcColorSpace, kOpaque_SkAlphaType,
dstColorSpace, kOpaque_SkAlphaType);
- paint.addColorFragmentProcessor(std::move(colorConversionProcessor));
+ paint.setColorFragmentProcessor(std::move(colorConversionProcessor));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
const SkRect r = SkRect::MakeIWH(yuvSizeInfo.fSizes[0].fWidth,
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index c50bc6a..42d9d1a 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -345,7 +345,7 @@
}
if (paintFP) {
- grPaint->addColorFragmentProcessor(std::move(paintFP));
+ grPaint->setColorFragmentProcessor(std::move(paintFP));
}
return true;
diff --git a/src/gpu/effects/GrConfigConversionEffect.fp b/src/gpu/effects/GrConfigConversionEffect.fp
index 0e8624a..aad2fa7 100644
--- a/src/gpu/effects/GrConfigConversionEffect.fp
+++ b/src/gpu/effects/GrConfigConversionEffect.fp
@@ -77,7 +77,7 @@
// We then verify that two reads produced the same values.
GrPaint paint1;
- paint1.addColorFragmentProcessor(GrConfigConversionEffect::Make(
+ paint1.setColorFragmentProcessor(GrConfigConversionEffect::Make(
GrTextureEffect::Make(std::move(dataView), kPremul_SkAlphaType),
PMConversion::kToUnpremul));
paint1.setPorterDuffXPFactory(SkBlendMode::kSrc);
@@ -92,7 +92,7 @@
tempRTC->discard();
GrPaint paint2;
- paint2.addColorFragmentProcessor(GrConfigConversionEffect::Make(
+ paint2.setColorFragmentProcessor(GrConfigConversionEffect::Make(
GrTextureEffect::Make(readRTC->readSurfaceView(), kUnpremul_SkAlphaType),
PMConversion::kToPremul));
paint2.setPorterDuffXPFactory(SkBlendMode::kSrc);
@@ -100,7 +100,7 @@
tempRTC->fillRectToRect(nullptr, std::move(paint2), GrAA::kNo, SkMatrix::I(), kRect, kRect);
GrPaint paint3;
- paint3.addColorFragmentProcessor(GrConfigConversionEffect::Make(
+ paint3.setColorFragmentProcessor(GrConfigConversionEffect::Make(
GrTextureEffect::Make(tempRTC->readSurfaceView(), kPremul_SkAlphaType),
PMConversion::kToUnpremul));
paint3.setPorterDuffXPFactory(SkBlendMode::kSrc);
diff --git a/src/gpu/effects/generated/GrConfigConversionEffect.cpp b/src/gpu/effects/generated/GrConfigConversionEffect.cpp
index 2297f7e..cf5a18e 100644
--- a/src/gpu/effects/generated/GrConfigConversionEffect.cpp
+++ b/src/gpu/effects/generated/GrConfigConversionEffect.cpp
@@ -137,7 +137,7 @@
// We then verify that two reads produced the same values.
GrPaint paint1;
- paint1.addColorFragmentProcessor(GrConfigConversionEffect::Make(
+ paint1.setColorFragmentProcessor(GrConfigConversionEffect::Make(
GrTextureEffect::Make(std::move(dataView), kPremul_SkAlphaType),
PMConversion::kToUnpremul));
paint1.setPorterDuffXPFactory(SkBlendMode::kSrc);
@@ -152,7 +152,7 @@
tempRTC->discard();
GrPaint paint2;
- paint2.addColorFragmentProcessor(GrConfigConversionEffect::Make(
+ paint2.setColorFragmentProcessor(GrConfigConversionEffect::Make(
GrTextureEffect::Make(readRTC->readSurfaceView(), kUnpremul_SkAlphaType),
PMConversion::kToPremul));
paint2.setPorterDuffXPFactory(SkBlendMode::kSrc);
@@ -160,7 +160,7 @@
tempRTC->fillRectToRect(nullptr, std::move(paint2), GrAA::kNo, SkMatrix::I(), kRect, kRect);
GrPaint paint3;
- paint3.addColorFragmentProcessor(GrConfigConversionEffect::Make(
+ paint3.setColorFragmentProcessor(GrConfigConversionEffect::Make(
GrTextureEffect::Make(tempRTC->readSurfaceView(), kPremul_SkAlphaType),
PMConversion::kToUnpremul));
paint3.setPorterDuffXPFactory(SkBlendMode::kSrc);
diff --git a/src/gpu/ops/GrStencilAndCoverPathRenderer.cpp b/src/gpu/ops/GrStencilAndCoverPathRenderer.cpp
index d20a1d3..747be19 100644
--- a/src/gpu/ops/GrStencilAndCoverPathRenderer.cpp
+++ b/src/gpu/ops/GrStencilAndCoverPathRenderer.cpp
@@ -60,11 +60,9 @@
// The lack of vertex shaders means we can't move transform matrices into the vertex shader. We
// could do the transform in the fragment processor, but that would be very slow, so instead we
// just avoid using this path renderer in the face of transformed FPs.
- if (args.fPaint) {
- for (int i = args.fPaint->numColorFragmentProcessors() - 1; i >= 0; --i) {
- if (has_matrix(*args.fPaint->getColorFragmentProcessor(i))) {
- return CanDrawPath::kNo;
- }
+ if (args.fPaint && args.fPaint->hasColorFragmentProcessor()) {
+ if (has_matrix(*args.fPaint->getColorFragmentProcessor())) {
+ return CanDrawPath::kNo;
}
}
return CanDrawPath::kYes;
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 9ec2f26..b3b32b7 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -1073,7 +1073,7 @@
if (saturate == GrTextureOp::Saturate::kYes) {
fp = GrClampFragmentProcessor::Make(std::move(fp), /*clampToPremul=*/false);
}
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
return GrFillRectOp::Make(context, std::move(paint), aaType, quad);
}
}
diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp
index 7dfc391..3864f86 100644
--- a/src/image/SkImage_Gpu.cpp
+++ b/src/image/SkImage_Gpu.cpp
@@ -102,7 +102,7 @@
GrPaint paint;
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
- paint.addColorFragmentProcessor(std::move(colorFP));
+ paint.setColorFragmentProcessor(std::move(colorFP));
renderTargetContext->drawRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(),
SkRect::MakeIWH(this->width(), this->height()));
diff --git a/src/image/SkImage_GpuBase.cpp b/src/image/SkImage_GpuBase.cpp
index 51cf6fa..b901574 100644
--- a/src/image/SkImage_GpuBase.cpp
+++ b/src/image/SkImage_GpuBase.cpp
@@ -324,7 +324,7 @@
if (colorSpaceXform) {
fp = GrColorSpaceXformEffect::Make(std::move(fp), std::move(colorSpaceXform));
}
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
renderTargetContext->drawRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(), rect);
return true;
diff --git a/tests/DefaultPathRendererTest.cpp b/tests/DefaultPathRendererTest.cpp
index f08f56c..cef653b 100644
--- a/tests/DefaultPathRendererTest.cpp
+++ b/tests/DefaultPathRendererTest.cpp
@@ -93,7 +93,7 @@
const SkPMColor4f color = { 1.0f, 0.0f, 0.0f, 1.0f };
auto fp = GrConstColorProcessor::Make(color);
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
rtc->drawPath(nullptr, std::move(paint), GrAA::kNo,
SkMatrix::I(), invPath, style);
@@ -111,7 +111,7 @@
const SkPMColor4f color = { 0.0f, 1.0f, 0.0f, 1.0f };
auto fp = GrConstColorProcessor::Make(color);
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
rtc->drawPath(nullptr, std::move(paint), GrAA::kNo,
SkMatrix::I(), path, style);
diff --git a/tests/OnFlushCallbackTest.cpp b/tests/OnFlushCallbackTest.cpp
index 2088454..43b6549 100644
--- a/tests/OnFlushCallbackTest.cpp
+++ b/tests/OnFlushCallbackTest.cpp
@@ -476,7 +476,7 @@
auto fp = GrTextureEffect::Make(atlasView, atlasAlphaType);
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
std::unique_ptr<AtlasedRectOp> op(AtlasedRectOp::Make(context,
std::move(paint), r, start + i));
@@ -594,7 +594,7 @@
GrPaint paint;
auto fp = GrTextureEffect::Make(std::move(views[i]), kPremul_SkAlphaType, t);
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
rtc->drawRect(nullptr, std::move(paint), GrAA::kNo, SkMatrix::I(), r);
}
diff --git a/tests/ProcessorTest.cpp b/tests/ProcessorTest.cpp
index 9292c12..ff56231 100644
--- a/tests/ProcessorTest.cpp
+++ b/tests/ProcessorTest.cpp
@@ -229,7 +229,7 @@
void test_draw_op(GrContext* context, GrRenderTargetContext* rtc,
std::unique_ptr<GrFragmentProcessor> fp) {
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
auto op = GrFillRectOp::MakeNonAARect(context, std::move(paint), SkMatrix::I(),
diff --git a/tests/ProgramsTest.cpp b/tests/ProgramsTest.cpp
index fba33ea..afa3e13 100644
--- a/tests/ProgramsTest.cpp
+++ b/tests/ProgramsTest.cpp
@@ -229,7 +229,7 @@
if (d->fRandom->nextF() < procTreeProbability) {
std::unique_ptr<GrFragmentProcessor> fp(create_random_proc_tree(d, 2, maxTreeLevels));
if (fp) {
- paint->addColorFragmentProcessor(std::move(fp));
+ paint->setColorFragmentProcessor(std::move(fp));
}
} else {
int numProcs = d->fRandom->nextULessThan(maxStages + 1);
@@ -242,7 +242,7 @@
}
// finally add the stage to the correct pipeline in the drawstate
if (s < numColorProcs) {
- paint->addColorFragmentProcessor(std::move(fp));
+ paint->setColorFragmentProcessor(std::move(fp));
} else {
paint->addCoverageFragmentProcessor(std::move(fp));
}
@@ -330,7 +330,7 @@
paint.setXPFactory(GrPorterDuffXPFactory::Get(SkBlendMode::kSrc));
auto fp = GrFragmentProcessorTestFactory::MakeIdx(i, &ptd);
auto blockFP = BlockInputFragmentProcessor::Make(std::move(fp));
- paint.addColorFragmentProcessor(std::move(blockFP));
+ paint.setColorFragmentProcessor(std::move(blockFP));
GrDrawRandomOp(&random, renderTargetContext.get(), std::move(paint));
direct->flush(GrFlushInfo());
diff --git a/tests/RectangleTextureTest.cpp b/tests/RectangleTextureTest.cpp
index 0fa91f6..dbdf00a 100644
--- a/tests/RectangleTextureTest.cpp
+++ b/tests/RectangleTextureTest.cpp
@@ -35,7 +35,7 @@
auto fp = GrTextureEffect::Make(rectView, alphaType, SkMatrix::I(), filter);
GrPaint paint;
paint.setPorterDuffXPFactory(SkBlendMode::kSrc);
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
rtContext->drawPaint(nullptr, std::move(paint), SkMatrix::I());
TestReadPixels(reporter, rtContext.get(), expectedPixelValues,
"RectangleTexture-basic-draw");
diff --git a/tests/TriangulatingPathRendererTests.cpp b/tests/TriangulatingPathRendererTests.cpp
index 6b7ff33..7860e98 100644
--- a/tests/TriangulatingPathRendererTests.cpp
+++ b/tests/TriangulatingPathRendererTests.cpp
@@ -711,7 +711,7 @@
GrPaint paint;
paint.setXPFactory(GrPorterDuffXPFactory::Get(SkBlendMode::kSrc));
if (fp) {
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
}
SkIRect clipConservativeBounds = SkIRect::MakeWH(renderTargetContext->width(),
diff --git a/tools/gpu/TestOps.cpp b/tools/gpu/TestOps.cpp
index e0a195f..cfd6815 100644
--- a/tools/gpu/TestOps.cpp
+++ b/tools/gpu/TestOps.cpp
@@ -230,7 +230,7 @@
const SkRect& localRect,
const SkMatrix& localM) {
GrPaint paint;
- paint.addColorFragmentProcessor(std::move(fp));
+ paint.setColorFragmentProcessor(std::move(fp));
return TestRectOp::Make(context, std::move(paint), drawRect, localRect, localM);
}