Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1357)

Unified Diff: src/gpu/GrInOrderDrawBuffer.h

Issue 683673002: clear stencil clip on draw target (Closed) Base URL: https://skia.googlesource.com/skia.git@aa_rect_takes_gpu
Patch Set: rebase Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrGpu.cpp ('k') | src/gpu/GrInOrderDrawBuffer.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrInOrderDrawBuffer.h
diff --git a/src/gpu/GrInOrderDrawBuffer.h b/src/gpu/GrInOrderDrawBuffer.h
index 421a4a9ab9dc8a371fefcd559db6cf83e38cba46..7b9a926cf40b376427ce8d01f52b940152ae92dc 100644
--- a/src/gpu/GrInOrderDrawBuffer.h
+++ b/src/gpu/GrInOrderDrawBuffer.h
@@ -37,7 +37,7 @@ class GrVertexBufferAllocPool;
* in the GrGpu object that the buffer is played back into. The buffer requires VB and IB pools to
* store geometry.
*/
-class GrInOrderDrawBuffer : public GrDrawTarget {
+class GrInOrderDrawBuffer : public GrClipTarget {
public:
/**
@@ -75,11 +75,16 @@ public:
// overrides from GrDrawTarget
virtual bool geometryHints(int* vertexCount,
int* indexCount) const SK_OVERRIDE;
+
virtual void clear(const SkIRect* rect,
GrColor color,
bool canIgnoreRect,
GrRenderTarget* renderTarget) SK_OVERRIDE;
+ virtual void clearStencilClip(const SkIRect& rect,
+ bool insideClip,
+ GrRenderTarget* renderTarget) SK_OVERRIDE;
+
virtual void discard(GrRenderTarget*) SK_OVERRIDE;
virtual void initCopySurfaceDstDesc(const GrSurface* src, GrSurfaceDesc* desc) SK_OVERRIDE;
@@ -103,7 +108,7 @@ private:
Cmd(uint8_t type) : fType(type) {}
virtual ~Cmd() {}
- virtual void execute(GrDrawTarget*) = 0;
+ virtual void execute(GrClipTarget*) = 0;
uint8_t fType;
};
@@ -118,7 +123,7 @@ private:
const GrVertexBuffer* vertexBuffer() const { return fVertexBuffer.get(); }
const GrIndexBuffer* indexBuffer() const { return fIndexBuffer.get(); }
- virtual void execute(GrDrawTarget*);
+ virtual void execute(GrClipTarget*);
DrawInfo fInfo;
@@ -132,7 +137,7 @@ private:
const GrPath* path() const { return fPath.get(); }
- virtual void execute(GrDrawTarget*);
+ virtual void execute(GrClipTarget*);
SkPath::FillType fFill;
@@ -145,7 +150,7 @@ private:
const GrPath* path() const { return fPath.get(); }
- virtual void execute(GrDrawTarget*);
+ virtual void execute(GrClipTarget*);
SkPath::FillType fFill;
GrDeviceCoordTexture fDstCopy;
@@ -161,7 +166,7 @@ private:
uint32_t* indices() { return reinterpret_cast<uint32_t*>(CmdBuffer::GetDataForItem(this)); }
float* transforms() { return reinterpret_cast<float*>(&this->indices()[fCount]); }
- virtual void execute(GrDrawTarget*);
+ virtual void execute(GrClipTarget*);
size_t fCount;
PathTransformType fTransformsType;
@@ -178,7 +183,7 @@ private:
GrRenderTarget* renderTarget() const { return fRenderTarget.get(); }
- virtual void execute(GrDrawTarget*);
+ virtual void execute(GrClipTarget*);
SkIRect fRect;
GrColor fColor;
@@ -188,13 +193,28 @@ private:
GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget;
};
+ // This command is ONLY used by the clip mask manager to clear the stencil clip bits
+ struct ClearStencilClip : public Cmd {
+ ClearStencilClip(GrRenderTarget* rt) : Cmd(kClear_Cmd), fRenderTarget(rt) {}
+
+ GrRenderTarget* renderTarget() const { return fRenderTarget.get(); }
+
+ virtual void execute(GrClipTarget*);
+
+ SkIRect fRect;
+ bool fInsideClip;
+
+ private:
+ GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget;
+ };
+
struct CopySurface : public Cmd {
CopySurface(GrSurface* dst, GrSurface* src) : Cmd(kCopySurface_Cmd), fDst(dst), fSrc(src) {}
GrSurface* dst() const { return fDst.get(); }
GrSurface* src() const { return fSrc.get(); }
- virtual void execute(GrDrawTarget*);
+ virtual void execute(GrClipTarget*);
SkIPoint fDstPoint;
SkIRect fSrcRect;
@@ -207,7 +227,7 @@ private:
struct SetState : public Cmd {
SetState(const GrDrawState& state) : Cmd(kSetState_Cmd), fState(state) {}
- virtual void execute(GrDrawTarget*);
+ virtual void execute(GrClipTarget*);
GrDrawState fState;
};
@@ -220,7 +240,7 @@ private:
fClipData.fOrigin = clipData->fOrigin;
}
- virtual void execute(GrDrawTarget*);
+ virtual void execute(GrClipTarget*);
GrClipData fClipData;
@@ -300,7 +320,7 @@ private:
GrClipData* fLastClip;
SkTArray<GrTraceMarkerSet, false> fGpuCmdMarkers;
- GrDrawTarget* fDstGpu;
+ GrClipTarget* fDstGpu;
bool fClipSet;
enum ClipProxyState {
@@ -332,7 +352,7 @@ private:
bool fFlushing;
uint32_t fDrawID;
- typedef GrDrawTarget INHERITED;
+ typedef GrClipTarget INHERITED;
};
#endif
« no previous file with comments | « src/gpu/GrGpu.cpp ('k') | src/gpu/GrInOrderDrawBuffer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698