aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrDrawContext.cpp
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2015-10-17 07:43:27 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-10-17 07:43:27 -0700
commit77a2e52c7d5c77de73ecab5fec79072ee4460706 (patch)
tree165c7d8957b1e8415ecd98b57016db576e5b14a2 /src/gpu/GrDrawContext.cpp
parent1ed348aea37e34dd0ad3bde33cd28bcbd1c2a587 (diff)
Remove DrawingMgr shims from GrContext
Diffstat (limited to 'src/gpu/GrDrawContext.cpp')
-rw-r--r--src/gpu/GrDrawContext.cpp73
1 files changed, 40 insertions, 33 deletions
diff --git a/src/gpu/GrDrawContext.cpp b/src/gpu/GrDrawContext.cpp
index 1aec92ec4c..99a1ce5390 100644
--- a/src/gpu/GrDrawContext.cpp
+++ b/src/gpu/GrDrawContext.cpp
@@ -10,6 +10,7 @@
#include "GrBatchTest.h"
#include "GrColor.h"
#include "GrDrawContext.h"
+#include "GrDrawingManager.h"
#include "GrOvalRenderer.h"
#include "GrPathRenderer.h"
#include "GrRenderTarget.h"
@@ -23,28 +24,30 @@
#include "batches/GrDrawVerticesBatch.h"
#include "batches/GrRectBatchFactory.h"
-#define ASSERT_OWNED_RESOURCE(R) SkASSERT(!(R) || (R)->getContext() == fContext)
-#define RETURN_IF_ABANDONED if (fContext->abandoned()) { return; }
-#define RETURN_FALSE_IF_ABANDONED if (fContext->abandoned()) { return false; }
-#define RETURN_NULL_IF_ABANDONED if (fContext->abandoned()) { return nullptr; }
+#define ASSERT_OWNED_RESOURCE(R) SkASSERT(!(R) || (R)->getContext() == fDrawingManager->getContext())
+#define RETURN_IF_ABANDONED if (fDrawingManager->abandoned()) { return; }
+#define RETURN_FALSE_IF_ABANDONED if (fDrawingManager->abandoned()) { return false; }
+#define RETURN_NULL_IF_ABANDONED if (fDrawingManager->abandoned()) { return nullptr; }
class AutoCheckFlush {
public:
- AutoCheckFlush(GrContext* context) : fContext(context) { SkASSERT(context); }
- ~AutoCheckFlush() { fContext->flushIfNecessary(); }
+ AutoCheckFlush(GrDrawingManager* drawingManager) : fDrawingManager(drawingManager) {
+ SkASSERT(fDrawingManager);
+ }
+ ~AutoCheckFlush() { fDrawingManager->getContext()->flushIfNecessary(); }
private:
- GrContext* fContext;
+ GrDrawingManager* fDrawingManager;
};
// In MDB mode the reffing of the 'getLastDrawTarget' call's result allows in-progress
// drawTargets to be picked up and added to by drawContexts lower in the call
// stack. When this occurs with a closed drawTarget, a new one will be allocated
// when the drawContext attempts to use it (via getDrawTarget).
-GrDrawContext::GrDrawContext(GrContext* context,
+GrDrawContext::GrDrawContext(GrDrawingManager* drawingMgr,
GrRenderTarget* rt,
const SkSurfaceProps* surfaceProps)
- : fContext(context)
+ : fDrawingManager(drawingMgr)
, fRenderTarget(rt)
, fDrawTarget(SkSafeRef(rt->getLastDrawTarget()))
, fTextContext(nullptr)
@@ -71,7 +74,7 @@ GrDrawTarget* GrDrawContext::getDrawTarget() {
SkDEBUGCODE(this->validate();)
if (!fDrawTarget || fDrawTarget->isClosed()) {
- fDrawTarget = fContext->newDrawTarget(fRenderTarget);
+ fDrawTarget = fDrawingManager->newDrawTarget(fRenderTarget);
fRenderTarget->setLastDrawTarget(fDrawTarget);
}
@@ -95,7 +98,7 @@ void GrDrawContext::drawText(const GrClip& clip, const GrPaint& grPaint,
SkDEBUGCODE(this->validate();)
if (!fTextContext) {
- fTextContext = fContext->textContext(fSurfaceProps, fRenderTarget);
+ fTextContext = fDrawingManager->textContext(fSurfaceProps, fRenderTarget);
}
fTextContext->drawText(this, fRenderTarget, clip, grPaint, skPaint, viewMatrix,
@@ -112,7 +115,7 @@ void GrDrawContext::drawPosText(const GrClip& clip, const GrPaint& grPaint,
SkDEBUGCODE(this->validate();)
if (!fTextContext) {
- fTextContext = fContext->textContext(fSurfaceProps, fRenderTarget);
+ fTextContext = fDrawingManager->textContext(fSurfaceProps, fRenderTarget);
}
fTextContext->drawPosText(this, fRenderTarget, clip, grPaint, skPaint, viewMatrix, text, byteLength,
@@ -127,7 +130,7 @@ void GrDrawContext::drawTextBlob(const GrClip& clip, const SkPaint& skPaint,
SkDEBUGCODE(this->validate();)
if (!fTextContext) {
- fTextContext = fContext->textContext(fSurfaceProps, fRenderTarget);
+ fTextContext = fDrawingManager->textContext(fSurfaceProps, fRenderTarget);
}
fTextContext->drawTextBlob(this, fRenderTarget,
@@ -152,7 +155,7 @@ void GrDrawContext::discard() {
RETURN_IF_ABANDONED
SkDEBUGCODE(this->validate();)
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
this->getDrawTarget()->discard(fRenderTarget);
}
@@ -162,7 +165,7 @@ void GrDrawContext::clear(const SkIRect* rect,
RETURN_IF_ABANDONED
SkDEBUGCODE(this->validate();)
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
this->getDrawTarget()->clear(rect, color, canIgnoreRect, fRenderTarget);
}
@@ -206,7 +209,7 @@ void GrDrawContext::drawPaint(const GrClip& clip,
return;
}
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(*paint, fRenderTarget, clip);
this->getDrawTarget()->drawNonAARect(pipelineBuilder,
@@ -238,7 +241,7 @@ void GrDrawContext::drawRect(const GrClip& clip,
return;
}
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(paint, fRenderTarget, clip);
@@ -327,7 +330,7 @@ void GrDrawContext::drawNonAARectToRect(const GrClip& clip,
RETURN_IF_ABANDONED
SkDEBUGCODE(this->validate();)
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(paint, fRenderTarget, clip);
this->getDrawTarget()->drawNonAARect(pipelineBuilder,
@@ -345,7 +348,7 @@ void GrDrawContext::drawNonAARectWithLocalMatrix(const GrClip& clip,
RETURN_IF_ABANDONED
SkDEBUGCODE(this->validate();)
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(paint, fRenderTarget, clip);
this->getDrawTarget()->drawNonAARect(pipelineBuilder,
@@ -368,7 +371,7 @@ void GrDrawContext::drawVertices(const GrClip& clip,
RETURN_IF_ABANDONED
SkDEBUGCODE(this->validate();)
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(paint, fRenderTarget, clip);
@@ -409,7 +412,7 @@ void GrDrawContext::drawAtlas(const GrClip& clip,
RETURN_IF_ABANDONED
SkDEBUGCODE(this->validate();)
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(paint, fRenderTarget, clip);
@@ -443,7 +446,7 @@ void GrDrawContext::drawRRect(const GrClip& clip,
return;
}
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(paint, fRenderTarget, clip);
GrColor color = paint.getColor();
@@ -477,7 +480,7 @@ void GrDrawContext::drawDRRect(const GrClip& clip,
return;
}
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(paint, fRenderTarget, clip);
GrColor color = paint.getColor();
@@ -522,7 +525,7 @@ void GrDrawContext::drawOval(const GrClip& clip,
return;
}
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(paint, fRenderTarget, clip);
GrColor color = paint.getColor();
@@ -597,7 +600,7 @@ void GrDrawContext::drawBatch(const GrClip& clip,
RETURN_IF_ABANDONED
SkDEBUGCODE(this->validate();)
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(paint, fRenderTarget, clip);
this->getDrawTarget()->drawBatch(pipelineBuilder, batch);
@@ -625,7 +628,7 @@ void GrDrawContext::drawPath(const GrClip& clip,
// cache. This presents a potential hazard for buffered drawing. However,
// the writePixels that uploads to the scratch will perform a flush so we're
// OK.
- AutoCheckFlush acf(fContext);
+ AutoCheckFlush acf(fDrawingManager);
GrPipelineBuilder pipelineBuilder(paint, fRenderTarget, clip);
if (!strokeInfo.isDashed()) {
@@ -689,8 +692,10 @@ void GrDrawContext::internalDrawPath(GrDrawTarget* target,
const GrStrokeInfo* strokeInfoPtr = &strokeInfo;
// Try a 1st time without stroking the path and without allowing the SW renderer
- GrPathRenderer* pr = fContext->getPathRenderer(target, pipelineBuilder, viewMatrix, *pathPtr,
- *strokeInfoPtr, false, type);
+ GrPathRenderer* pr = fDrawingManager->getContext()->getPathRenderer(target, pipelineBuilder,
+ viewMatrix, *pathPtr,
+ *strokeInfoPtr, false,
+ type);
GrStrokeInfo dashlessStrokeInfo(strokeInfo, false);
if (nullptr == pr && strokeInfo.isDashed()) {
@@ -703,8 +708,9 @@ void GrDrawContext::internalDrawPath(GrDrawTarget* target,
return;
}
strokeInfoPtr = &dashlessStrokeInfo;
- pr = fContext->getPathRenderer(target, pipelineBuilder, viewMatrix, *pathPtr, *strokeInfoPtr,
- false, type);
+ pr = fDrawingManager->getContext()->getPathRenderer(target, pipelineBuilder, viewMatrix,
+ *pathPtr, *strokeInfoPtr,
+ false, type);
}
if (nullptr == pr) {
@@ -727,8 +733,9 @@ void GrDrawContext::internalDrawPath(GrDrawTarget* target,
}
// This time, allow SW renderer
- pr = fContext->getPathRenderer(target, pipelineBuilder, viewMatrix, *pathPtr, *strokeInfoPtr,
- true, type);
+ pr = fDrawingManager->getContext()->getPathRenderer(target, pipelineBuilder, viewMatrix,
+ *pathPtr, *strokeInfoPtr,
+ true, type);
}
if (nullptr == pr) {
@@ -740,7 +747,7 @@ void GrDrawContext::internalDrawPath(GrDrawTarget* target,
GrPathRenderer::DrawPathArgs args;
args.fTarget = target;
- args.fResourceProvider = fContext->resourceProvider();
+ args.fResourceProvider = fDrawingManager->getContext()->resourceProvider();
args.fPipelineBuilder = pipelineBuilder;
args.fColor = color;
args.fViewMatrix = &viewMatrix;