Index: include/gpu/GrContext.h |
diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h |
index 48510d6129d514f19d298c6233be39f679c9bacc..95fe92c0aec4c22d0e630895305e0b6ca2e0a90e 100644 |
--- a/include/gpu/GrContext.h |
+++ b/include/gpu/GrContext.h |
@@ -303,24 +303,6 @@ public: |
*/ |
void setMaxTextureSizeOverride(int maxTextureSizeOverride); |
- /////////////////////////////////////////////////////////////////////////// |
- // Render targets |
- |
- /** |
- * Sets the render target. |
- * @param target the render target to set. |
- */ |
- void setRenderTarget(GrRenderTarget* target) { |
- fRenderTarget.reset(SkSafeRef(target)); |
- } |
- |
- /** |
- * Gets the current render target. |
- * @return the currently bound render target. |
- */ |
- const GrRenderTarget* getRenderTarget() const { return fRenderTarget.get(); } |
- GrRenderTarget* getRenderTarget() { return fRenderTarget.get(); } |
- |
/** |
* Can the provided configuration act as a color render target? |
*/ |
@@ -408,7 +390,7 @@ public: |
/** |
* Draw everywhere (respecting the clip) with the paint. |
*/ |
- void drawPaint(const GrPaint&, const SkMatrix& viewMatrix); |
+ void drawPaint(GrRenderTarget*, const GrPaint&, const SkMatrix& viewMatrix); |
/** |
* Draw the rect using a paint. |
@@ -422,7 +404,8 @@ public: |
* mitered/beveled stroked based on stroke width. |
* The rects coords are used to access the paint (through texture matrix) |
*/ |
- void drawRect(const GrPaint& paint, |
+ void drawRect(GrRenderTarget*, |
+ const GrPaint& paint, |
const SkMatrix& viewMatrix, |
const SkRect&, |
const GrStrokeInfo* strokeInfo = NULL); |
@@ -437,7 +420,8 @@ public: |
* @param localMatrix an optional matrix to transform the shader coordinates before applying |
* to rectToDraw |
*/ |
- void drawNonAARectToRect(const GrPaint& paint, |
+ void drawNonAARectToRect(GrRenderTarget*, |
+ const GrPaint& paint, |
const SkMatrix& viewMatrix, |
const SkRect& rectToDraw, |
const SkRect& localRect, |
@@ -446,11 +430,12 @@ public: |
/** |
* Draws a non-AA rect with paint and a localMatrix |
*/ |
- void drawNonAARectWithLocalMatrix(const GrPaint& paint, |
+ void drawNonAARectWithLocalMatrix(GrRenderTarget* rt, |
+ const GrPaint& paint, |
const SkMatrix& viewMatrix, |
const SkRect& rect, |
const SkMatrix& localMatrix) { |
- this->drawNonAARectToRect(paint, viewMatrix, rect, rect, &localMatrix); |
+ this->drawNonAARectToRect(rt, paint, viewMatrix, rect, rect, &localMatrix); |
} |
/** |
@@ -462,7 +447,10 @@ public: |
* @param strokeInfo the stroke information (width, join, cap) and |
* the dash information (intervals, count, phase). |
*/ |
- void drawRRect(const GrPaint&, const SkMatrix& viewMatrix, const SkRRect& rrect, |
+ void drawRRect(GrRenderTarget*, |
+ const GrPaint&, |
+ const SkMatrix& viewMatrix, |
+ const SkRRect& rrect, |
const GrStrokeInfo&); |
/** |
@@ -475,7 +463,10 @@ public: |
* @param outer the outer roundrect |
* @param inner the inner roundrect |
*/ |
- void drawDRRect(const GrPaint&, const SkMatrix& viewMatrix, const SkRRect& outer, |
+ void drawDRRect(GrRenderTarget*, |
+ const GrPaint&, |
+ const SkMatrix& viewMatrix, |
+ const SkRRect& outer, |
const SkRRect& inner); |
@@ -488,7 +479,11 @@ public: |
* @param strokeInfo the stroke information (width, join, cap) and |
* the dash information (intervals, count, phase). |
*/ |
- void drawPath(const GrPaint&, const SkMatrix& viewMatrix, const SkPath&, const GrStrokeInfo&); |
+ void drawPath(GrRenderTarget*, |
+ const GrPaint&, |
+ const SkMatrix& viewMatrix, |
+ const SkPath&, |
+ const GrStrokeInfo&); |
/** |
* Draws vertices with a paint. |
@@ -507,7 +502,8 @@ public: |
* @param indexCount if indices is non-null then this is the |
* number of indices. |
*/ |
- void drawVertices(const GrPaint& paint, |
+ void drawVertices(GrRenderTarget*, |
+ const GrPaint& paint, |
const SkMatrix& viewMatrix, |
GrPrimitiveType primitiveType, |
int vertexCount, |
@@ -526,7 +522,8 @@ public: |
* @param strokeInfo the stroke information (width, join, cap) and |
* the dash information (intervals, count, phase). |
*/ |
- void drawOval(const GrPaint& paint, |
+ void drawOval(GrRenderTarget*, |
+ const GrPaint& paint, |
const SkMatrix& viewMatrix, |
const SkRect& oval, |
const GrStrokeInfo& strokeInfo); |
@@ -670,30 +667,6 @@ public: |
/////////////////////////////////////////////////////////////////////////// |
// Helpers |
- class AutoRenderTarget : public ::SkNoncopyable { |
- public: |
- AutoRenderTarget(GrContext* context, GrRenderTarget* target) { |
- fPrevTarget = context->getRenderTarget(); |
- SkSafeRef(fPrevTarget); |
- context->setRenderTarget(target); |
- fContext = context; |
- } |
- AutoRenderTarget(GrContext* context) { |
- fPrevTarget = context->getRenderTarget(); |
- SkSafeRef(fPrevTarget); |
- fContext = context; |
- } |
- ~AutoRenderTarget() { |
- if (fContext) { |
- fContext->setRenderTarget(fPrevTarget); |
- } |
- SkSafeUnref(fPrevTarget); |
- } |
- private: |
- GrContext* fContext; |
- GrRenderTarget* fPrevTarget; |
- }; |
- |
class AutoClip : public ::SkNoncopyable { |
public: |
// This enum exists to require a caller of the constructor to acknowledge that the clip will |
@@ -736,14 +709,12 @@ public: |
class AutoWideOpenIdentityDraw { |
public: |
- AutoWideOpenIdentityDraw(GrContext* ctx, GrRenderTarget* rt) |
- : fAutoClip(ctx, AutoClip::kWideOpen_InitialClip) |
- , fAutoRT(ctx, rt) { |
+ AutoWideOpenIdentityDraw(GrContext* ctx) |
+ : fAutoClip(ctx, AutoClip::kWideOpen_InitialClip) { |
} |
private: |
AutoClip fAutoClip; |
- AutoRenderTarget fAutoRT; |
}; |
/////////////////////////////////////////////////////////////////////////// |
@@ -789,7 +760,6 @@ public: |
private: |
GrGpu* fGpu; |
- SkAutoTUnref<GrRenderTarget> fRenderTarget; |
const GrClipData* fClip; // TODO: make this ref counted |
GrResourceCache* fResourceCache; |
@@ -833,7 +803,8 @@ private: |
class AutoCheckFlush; |
// Sets the paint and returns the target to draw into. This function is overloaded to either |
// take a GrDrawState, GrPaint, and AutoCheckFlush, or JUST an AutoCheckFlush |
- GrDrawTarget* prepareToDraw(GrPipelineBuilder*, const GrPaint* paint, const AutoCheckFlush*); |
+ GrDrawTarget* prepareToDraw(GrPipelineBuilder*, GrRenderTarget* rt, const GrPaint* paint, |
+ const AutoCheckFlush*); |
void internalDrawPath(GrDrawTarget*, |
GrPipelineBuilder*, |