aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gm/constcolorprocessor.cpp4
-rw-r--r--src/gpu/GrDrawContext.cpp45
-rw-r--r--src/gpu/GrPipelineBuilder.cpp12
-rw-r--r--src/gpu/GrPipelineBuilder.h4
-rw-r--r--src/gpu/text/GrAtlasTextBlob.cpp6
-rw-r--r--src/gpu/text/GrStencilAndCoverTextContext.cpp9
6 files changed, 50 insertions, 30 deletions
diff --git a/gm/constcolorprocessor.cpp b/gm/constcolorprocessor.cpp
index f3c5a650f9..da7aa38838 100644
--- a/gm/constcolorprocessor.cpp
+++ b/gm/constcolorprocessor.cpp
@@ -107,7 +107,9 @@ protected:
GrColor color = kColors[procColor];
SkAutoTUnref<GrFragmentProcessor> fp(GrConstColorProcessor::Create(color, mode));
- GrPipelineBuilder pipelineBuilder(grPaint, drawContext->accessRenderTarget());
+ GrPipelineBuilder pipelineBuilder(grPaint,
+ drawContext->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(drawContext->accessRenderTarget());
pipelineBuilder.addColorFragmentProcessor(fp);
SkAutoTUnref<GrDrawBatch> batch(
diff --git a/src/gpu/GrDrawContext.cpp b/src/gpu/GrDrawContext.cpp
index 108f3a2280..b34111cdfd 100644
--- a/src/gpu/GrDrawContext.cpp
+++ b/src/gpu/GrDrawContext.cpp
@@ -239,7 +239,8 @@ void GrDrawContext::drawPaint(const GrClip& clip,
SkAutoTUnref<GrDrawBatch> batch(
GrRectBatchFactory::CreateNonAAFill(paint->getColor(), SkMatrix::I(), r, nullptr,
&localMatrix));
- GrPipelineBuilder pipelineBuilder(*paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(*paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
}
}
@@ -355,7 +356,8 @@ void GrDrawContext::drawRect(const GrClip& clip,
}
if (batch) {
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
if (snapToPixelCenters) {
pipelineBuilder.setState(GrPipelineBuilder::kSnapVerticesToPixelCenters_Flag,
@@ -392,7 +394,8 @@ bool GrDrawContextPriv::drawAndStencilRect(const GrFixedClip& clip,
SkAutoTUnref<GrDrawBatch> batch(fDrawContext->getFillRectBatch(paint, viewMatrix, rect));
if (batch) {
- GrPipelineBuilder pipelineBuilder(paint, fDrawContext->accessRenderTarget());
+ GrPipelineBuilder pipelineBuilder(paint, fDrawContext->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fDrawContext->accessRenderTarget());
pipelineBuilder.setUserStencil(ss);
fDrawContext->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
@@ -428,7 +431,8 @@ void GrDrawContext::fillRectToRect(const GrClip& clip,
}
if (batch) {
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->drawBatch(&pipelineBuilder, clip, batch);
}
}
@@ -455,7 +459,8 @@ void GrDrawContext::fillRectWithLocalMatrix(const GrClip& clip,
nullptr, &localMatrix));
}
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
}
@@ -500,7 +505,8 @@ void GrDrawContext::drawVertices(const GrClip& clip,
indexCount, colors, texCoords,
bounds));
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
}
@@ -525,7 +531,8 @@ void GrDrawContext::drawAtlas(const GrClip& clip,
SkAutoTUnref<GrDrawBatch> batch(GrDrawAtlasBatch::Create(geometry, viewMatrix, spriteCount,
xform, texRect, colors));
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
}
@@ -558,7 +565,8 @@ void GrDrawContext::drawRRect(const GrClip& clip,
stroke,
shaderCaps));
if (batch) {
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
return;
}
@@ -683,7 +691,8 @@ void GrDrawContext::drawOval(const GrClip& clip,
stroke,
shaderCaps));
if (batch) {
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
return;
}
@@ -713,7 +722,8 @@ void GrDrawContext::drawImageNine(const GrClip& clip,
imageWidth, imageHeight,
center, dst));
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
}
@@ -773,7 +783,8 @@ void GrDrawContext::drawBatch(const GrClip& clip,
AutoCheckFlush acf(fDrawingManager);
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
}
@@ -805,7 +816,8 @@ void GrDrawContext::drawPath(const GrClip& clip,
SkAutoTUnref<GrDrawBatch> batch(GrRectBatchFactory::CreateAAFillNestedRects(
paint.getColor(), viewMatrix, rects));
if (batch) {
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
}
return;
@@ -822,7 +834,8 @@ void GrDrawContext::drawPath(const GrClip& clip,
style.strokeRec(),
shaderCaps));
if (batch) {
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
this->getDrawTarget()->drawBatch(pipelineBuilder, clip, batch);
return;
}
@@ -888,7 +901,8 @@ bool GrDrawContextPriv::drawAndStencilPath(const GrFixedClip& clip,
GrPaint paint;
paint.setCoverageSetOpXPFactory(op, invert);
- GrPipelineBuilder pipelineBuilder(paint, fDrawContext->accessRenderTarget());
+ GrPipelineBuilder pipelineBuilder(paint, fDrawContext->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fDrawContext->accessRenderTarget());
pipelineBuilder.setUserStencil(ss);
GrPathRenderer::DrawPathArgs args;
@@ -994,7 +1008,8 @@ void GrDrawContext::internalDrawPath(const GrClip& clip,
return;
}
- GrPipelineBuilder pipelineBuilder(paint, fRenderTarget.get());
+ GrPipelineBuilder pipelineBuilder(paint, this->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(fRenderTarget.get());
GrPathRenderer::DrawPathArgs args;
args.fTarget = this->getDrawTarget();
diff --git a/src/gpu/GrPipelineBuilder.cpp b/src/gpu/GrPipelineBuilder.cpp
index fd97e58ab8..04967a780b 100644
--- a/src/gpu/GrPipelineBuilder.cpp
+++ b/src/gpu/GrPipelineBuilder.cpp
@@ -16,13 +16,13 @@
#include "effects/GrPorterDuffXferProcessor.h"
GrPipelineBuilder::GrPipelineBuilder()
- : fFlags(0x0),
- fUserStencilSettings(&GrUserStencilSettings::kUnused),
- fDrawFace(kBoth_DrawFace) {
+ : fFlags(0x0)
+ , fUserStencilSettings(&GrUserStencilSettings::kUnused)
+ , fDrawFace(kBoth_DrawFace) {
SkDEBUGCODE(fBlockEffectRemovalCnt = 0;)
}
-GrPipelineBuilder::GrPipelineBuilder(const GrPaint& paint, GrRenderTarget* rt)
+GrPipelineBuilder::GrPipelineBuilder(const GrPaint& paint, bool targetHasUnifiedMultisampling)
: GrPipelineBuilder() {
SkDEBUGCODE(fBlockEffectRemovalCnt = 0;)
@@ -36,10 +36,8 @@ GrPipelineBuilder::GrPipelineBuilder(const GrPaint& paint, GrRenderTarget* rt)
fXPFactory.reset(SkSafeRef(paint.getXPFactory()));
- this->setRenderTarget(rt);
-
this->setState(GrPipelineBuilder::kHWAntialias_Flag,
- rt->isUnifiedMultisampled() && paint.isAntiAlias());
+ targetHasUnifiedMultisampling && paint.isAntiAlias());
this->setState(GrPipelineBuilder::kDisableOutputConversionToSRGB_Flag,
paint.getDisableOutputConversionToSRGB());
this->setState(GrPipelineBuilder::kAllowSRGBInputs_Flag,
diff --git a/src/gpu/GrPipelineBuilder.h b/src/gpu/GrPipelineBuilder.h
index 0104be7d49..ca1adeee1b 100644
--- a/src/gpu/GrPipelineBuilder.h
+++ b/src/gpu/GrPipelineBuilder.h
@@ -31,12 +31,12 @@ public:
GrPipelineBuilder();
/**
- * Initializes the GrPipelineBuilder based on a GrPaint, render target, and clip. Note
+ * Initializes the GrPipelineBuilder based on a GrPaint, MSAA availability. Note
* that GrPipelineBuilder encompasses more than GrPaint. Aspects of GrPipelineBuilder that have
* no GrPaint equivalents are set to default values with the exception of vertex attribute state
* which is unmodified by this function and clipping which will be enabled.
*/
- GrPipelineBuilder(const GrPaint&, GrRenderTarget*);
+ GrPipelineBuilder(const GrPaint&, bool targetHasUnifiedMultisampling);
virtual ~GrPipelineBuilder();
diff --git a/src/gpu/text/GrAtlasTextBlob.cpp b/src/gpu/text/GrAtlasTextBlob.cpp
index 13c96b5e64..6e8a5cc019 100644
--- a/src/gpu/text/GrAtlasTextBlob.cpp
+++ b/src/gpu/text/GrAtlasTextBlob.cpp
@@ -419,7 +419,8 @@ void GrAtlasTextBlob::flushCached(GrContext* context,
SkScalar x, SkScalar y) {
// We loop through the runs of the blob, flushing each. If any run is too large, then we flush
// it as paths
- GrPipelineBuilder pipelineBuilder(grPaint, dc->accessRenderTarget());
+ GrPipelineBuilder pipelineBuilder(grPaint, dc->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(dc->accessRenderTarget());
GrColor color = grPaint.getColor();
@@ -448,7 +449,8 @@ void GrAtlasTextBlob::flushThrowaway(GrContext* context,
const SkMatrix& viewMatrix,
const SkIRect& clipBounds,
SkScalar x, SkScalar y) {
- GrPipelineBuilder pipelineBuilder(grPaint, dc->accessRenderTarget());
+ GrPipelineBuilder pipelineBuilder(grPaint, dc->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(dc->accessRenderTarget());
GrColor color = grPaint.getColor();
for (int run = 0; run < fRunCount; run++) {
diff --git a/src/gpu/text/GrStencilAndCoverTextContext.cpp b/src/gpu/text/GrStencilAndCoverTextContext.cpp
index eb6abb39a8..b74728ece9 100644
--- a/src/gpu/text/GrStencilAndCoverTextContext.cpp
+++ b/src/gpu/text/GrStencilAndCoverTextContext.cpp
@@ -82,7 +82,8 @@ void GrStencilAndCoverTextContext::drawText(GrContext* context, GrDrawContext* d
} else if (this->canDraw(skPaint, viewMatrix)) {
if (skPaint.getTextSize() > 0) {
TextRun run(skPaint);
- GrPipelineBuilder pipelineBuilder(paint, dc->accessRenderTarget());
+ GrPipelineBuilder pipelineBuilder(paint, dc->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(dc->accessRenderTarget());
run.setText(text, byteLength, x, y);
run.draw(context, dc, &pipelineBuilder, clip, paint.getColor(), viewMatrix, props, 0, 0,
clipBounds, fFallbackTextContext, skPaint);
@@ -117,7 +118,8 @@ void GrStencilAndCoverTextContext::drawPosText(GrContext* context, GrDrawContext
} else if (this->canDraw(skPaint, viewMatrix)) {
if (skPaint.getTextSize() > 0) {
TextRun run(skPaint);
- GrPipelineBuilder pipelineBuilder(paint, dc->accessRenderTarget());
+ GrPipelineBuilder pipelineBuilder(paint, dc->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(dc->accessRenderTarget());
run.setPosText(text, byteLength, pos, scalarsPerPosition, offset);
run.draw(context, dc, &pipelineBuilder, clip, paint.getColor(), viewMatrix, props, 0, 0,
clipBounds, fFallbackTextContext, skPaint);
@@ -225,7 +227,8 @@ void GrStencilAndCoverTextContext::drawTextBlob(GrContext* context, GrDrawContex
}
const TextBlob& blob = this->findOrCreateTextBlob(skBlob, skPaint);
- GrPipelineBuilder pipelineBuilder(paint, dc->accessRenderTarget());
+ GrPipelineBuilder pipelineBuilder(paint, dc->isUnifiedMultisampled());
+ pipelineBuilder.setRenderTarget(dc->accessRenderTarget());
TextBlob::Iter iter(blob);
for (TextRun* run = iter.get(); run; run = iter.next()) {