Index: src/gpu/GrDrawTarget.cpp |
diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp |
index b38f6974cb6dc092803f738088933531377315d2..6bbcc74b3d35c8da777e3236615f383925fcd43a 100644 |
--- a/src/gpu/GrDrawTarget.cpp |
+++ b/src/gpu/GrDrawTarget.cpp |
@@ -9,6 +9,7 @@ |
#include "GrAuditTrail.h" |
#include "GrCaps.h" |
+#include "GrDrawContext.h" |
#include "GrGpu.h" |
#include "GrPath.h" |
#include "GrPipeline.h" |
@@ -46,7 +47,6 @@ GrDrawTarget::GrDrawTarget(GrRenderTarget* rt, GrGpu* gpu, GrResourceProvider* r |
, fRenderTarget(rt) { |
// TODO: Stop extracting the context (currently needed by GrClipMaskManager) |
fContext = fGpu->getContext(); |
- fClipMaskManager.reset(new GrClipMaskManager(this)); |
fClipBatchToBounds = options.fClipBatchToBounds; |
fDrawBatchBounds = options.fDrawBatchBounds; |
@@ -235,11 +235,12 @@ void GrDrawTarget::reset() { |
} |
void GrDrawTarget::drawBatch(const GrPipelineBuilder& pipelineBuilder, |
+ GrDrawContext* drawContext, |
const GrClip& clip, |
GrDrawBatch* batch) { |
// Setup clip |
GrAppliedClip appliedClip; |
- if (!clip.apply(fClipMaskManager, pipelineBuilder, &batch->bounds(), &appliedClip)) { |
+ if (!clip.apply(fContext, pipelineBuilder, drawContext, &batch->bounds(), &appliedClip)) { |
return; |
} |
@@ -310,6 +311,7 @@ void GrDrawTarget::drawBatch(const GrPipelineBuilder& pipelineBuilder, |
} |
void GrDrawTarget::stencilPath(const GrPipelineBuilder& pipelineBuilder, |
+ GrDrawContext* drawContext, |
const GrClip& clip, |
const SkMatrix& viewMatrix, |
const GrPath* path, |
@@ -320,7 +322,7 @@ void GrDrawTarget::stencilPath(const GrPipelineBuilder& pipelineBuilder, |
// Setup clip |
GrAppliedClip appliedClip; |
- if (!clip.apply(fClipMaskManager, pipelineBuilder, nullptr, &appliedClip)) { |
+ if (!clip.apply(fContext, pipelineBuilder, drawContext, nullptr, &appliedClip)) { |
return; |
} |
// TODO: respect fClipBatchToBounds if we ever start computing bounds here. |
@@ -351,8 +353,8 @@ void GrDrawTarget::stencilPath(const GrPipelineBuilder& pipelineBuilder, |
void GrDrawTarget::clear(const SkIRect* rect, |
GrColor color, |
bool canIgnoreRect, |
- GrRenderTarget* renderTarget) { |
- SkIRect rtRect = SkIRect::MakeWH(renderTarget->width(), renderTarget->height()); |
+ GrDrawContext* drawContext) { |
+ SkIRect rtRect = SkIRect::MakeWH(drawContext->width(), drawContext->height()); |
SkIRect clippedRect; |
if (!rect || |
(canIgnoreRect && this->caps()->fullClearIsFree()) || |
@@ -371,21 +373,21 @@ void GrDrawTarget::clear(const SkIRect* rect, |
// The driver will ignore a clear if it is the only thing rendered to a |
// target before the target is read. |
if (rect == &rtRect) { |
- this->discard(renderTarget); |
+ drawContext->discard(); |
} |
GrPipelineBuilder pipelineBuilder; |
pipelineBuilder.setXPFactory( |
GrPorterDuffXPFactory::Create(SkXfermode::kSrc_Mode))->unref(); |
- pipelineBuilder.setRenderTarget(renderTarget); |
+ pipelineBuilder.setRenderTarget(drawContext->accessRenderTarget()); |
SkRect scalarRect = SkRect::Make(*rect); |
SkAutoTUnref<GrDrawBatch> batch( |
GrRectBatchFactory::CreateNonAAFill(color, SkMatrix::I(), scalarRect, |
nullptr, nullptr)); |
- this->drawBatch(pipelineBuilder, GrNoClip(), batch); |
+ this->drawBatch(pipelineBuilder, drawContext, GrNoClip(), batch); |
} else { |
- GrBatch* batch = new GrClearBatch(*rect, color, renderTarget); |
+ GrBatch* batch = new GrClearBatch(*rect, color, drawContext->accessRenderTarget()); |
this->recordBatch(batch); |
batch->unref(); |
} |