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

Unified Diff: src/gpu/GrInOrderDrawBuffer.h

Issue 685883003: Clip in grdrawtarget (Closed) Base URL: https://skia.googlesource.com/skia.git@drawtarget_on_clip_manager
Patch Set: add ccclip to ignore Created 6 years, 1 month 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 3d7d526531036b51a7fc39956c8a97ddb788a336..9b4124ab8f341ad1015dead3170449b524907f39 100644
--- a/src/gpu/GrInOrderDrawBuffer.h
+++ b/src/gpu/GrInOrderDrawBuffer.h
@@ -94,19 +94,16 @@ public:
virtual void initCopySurfaceDstDesc(const GrSurface* src, GrSurfaceDesc* desc) SK_OVERRIDE;
-protected:
- virtual void clipWillBeSet(const GrClipData* newClip) SK_OVERRIDE;
-
private:
+ typedef GrClipMaskManager::ScissorState ScissorState;
enum {
kDraw_Cmd = 1,
kStencilPath_Cmd = 2,
kSetState_Cmd = 3,
- kSetClip_Cmd = 4,
- kClear_Cmd = 5,
- kCopySurface_Cmd = 6,
- kDrawPath_Cmd = 7,
- kDrawPaths_Cmd = 8,
+ kClear_Cmd = 4,
+ kCopySurface_Cmd = 5,
+ kDrawPath_Cmd = 6,
+ kDrawPaths_Cmd = 7,
};
struct Cmd : ::SkNoncopyable {
@@ -119,9 +116,13 @@ private:
};
struct Draw : public Cmd {
- Draw(const DrawInfo& info, const GrVertexBuffer* vb, const GrIndexBuffer* ib)
+ Draw(const DrawInfo& info,
+ const ScissorState& scissorState,
+ const GrVertexBuffer* vb,
+ const GrIndexBuffer* ib)
: Cmd(kDraw_Cmd)
, fInfo(info)
+ , fScissorState(scissorState)
, fVertexBuffer(vb)
, fIndexBuffer(ib) {}
@@ -130,7 +131,8 @@ private:
virtual void execute(GrClipTarget*);
- DrawInfo fInfo;
+ DrawInfo fInfo;
+ ScissorState fScissorState;
private:
GrPendingIOResource<const GrVertexBuffer, kRead_GrIOType> fVertexBuffer;
@@ -144,7 +146,8 @@ private:
virtual void execute(GrClipTarget*);
- GrPathRendering::FillType fFill;
+ ScissorState fScissorState;
+ GrStencilSettings fStencilSettings;
private:
GrPendingIOResource<const GrPath, kRead_GrIOType> fPath;
@@ -157,8 +160,9 @@ private:
virtual void execute(GrClipTarget*);
- GrPathRendering::FillType fFill;
- GrDeviceCoordTexture fDstCopy;
+ GrDeviceCoordTexture fDstCopy;
+ ScissorState fScissorState;
+ GrStencilSettings fStencilSettings;
private:
GrPendingIOResource<const GrPath, kRead_GrIOType> fPath;
@@ -173,10 +177,11 @@ private:
virtual void execute(GrClipTarget*);
- size_t fCount;
- PathTransformType fTransformsType;
- GrPathRendering::FillType fFill;
- GrDeviceCoordTexture fDstCopy;
+ size_t fCount;
+ PathTransformType fTransformsType;
+ GrDeviceCoordTexture fDstCopy;
+ ScissorState fScissorState;
+ GrStencilSettings fStencilSettings;
private:
GrPendingIOResource<const GrPathRange, kRead_GrIOType> fPathRange;
@@ -237,38 +242,30 @@ private:
GrDrawState fState;
};
- struct SetClip : public Cmd {
- SetClip(const GrClipData* clipData)
- : Cmd(kSetClip_Cmd),
- fStackStorage(*clipData->fClipStack) {
- fClipData.fClipStack = &fStackStorage;
- fClipData.fOrigin = clipData->fOrigin;
- }
-
- virtual void execute(GrClipTarget*);
-
- GrClipData fClipData;
-
- private:
- SkClipStack fStackStorage;
- };
-
typedef void* TCmdAlign; // This wouldn't be enough align if a command used long double.
typedef GrTRecorder<Cmd, TCmdAlign> CmdBuffer;
// overrides from GrDrawTarget
- virtual void onDraw(const DrawInfo&) SK_OVERRIDE;
+ virtual void onDraw(const DrawInfo&, const GrClipMaskManager::ScissorState&) SK_OVERRIDE;
virtual void onDrawRect(const SkRect& rect,
const SkRect* localRect,
const SkMatrix* localMatrix) SK_OVERRIDE;
- virtual void onStencilPath(const GrPath*, GrPathRendering::FillType) SK_OVERRIDE;
- virtual void onDrawPath(const GrPath*, GrPathRendering::FillType,
+ virtual void onStencilPath(const GrPath*,
+ const GrClipMaskManager::ScissorState&,
+ const GrStencilSettings&) SK_OVERRIDE;
+ virtual void onDrawPath(const GrPath*,
+ const GrClipMaskManager::ScissorState&,
+ const GrStencilSettings&,
const GrDeviceCoordTexture* dstCopy) SK_OVERRIDE;
virtual void onDrawPaths(const GrPathRange*,
- const uint32_t indices[], int count,
- const float transforms[], PathTransformType,
- GrPathRendering::FillType, const GrDeviceCoordTexture*) SK_OVERRIDE;
+ const uint32_t indices[],
+ int count,
+ const float transforms[],
+ PathTransformType,
+ const GrClipMaskManager::ScissorState&,
+ const GrStencilSettings&,
+ const GrDeviceCoordTexture*) SK_OVERRIDE;
virtual void onClear(const SkIRect* rect,
GrColor color,
bool canIgnoreRect,
@@ -286,14 +283,12 @@ private:
virtual void willReserveVertexAndIndexSpace(int vertexCount,
int indexCount) SK_OVERRIDE;
- bool quickInsideClip(const SkRect& devBounds);
-
virtual void didAddGpuTraceMarker() SK_OVERRIDE {}
virtual void didRemoveGpuTraceMarker() SK_OVERRIDE {}
// Attempts to concat instances from info onto the previous draw. info must represent an
// instanced draw. The caller must have already recorded a new draw state and clip if necessary.
- int concatInstancedDraw(const DrawInfo& info);
+ int concatInstancedDraw(const DrawInfo& info, const GrClipMaskManager::ScissorState&);
// Determines whether the current draw operation requieres a new drawstate and if so records it.
void recordStateIfNecessary();
@@ -312,22 +307,10 @@ private:
CmdBuffer fCmdBuffer;
GrDrawState* fLastState;
- GrClipData* fLastClip;
-
SkTArray<GrTraceMarkerSet, false> fGpuCmdMarkers;
GrClipTarget* fDstGpu;
- bool fClipSet;
-
- enum ClipProxyState {
- kUnknown_ClipProxyState,
- kValid_ClipProxyState,
- kInvalid_ClipProxyState
- };
-
- ClipProxyState fClipProxyState;
- SkRect fClipProxy;
- GrVertexBufferAllocPool& fVertexPool;
- GrIndexBufferAllocPool& fIndexPool;
+ GrVertexBufferAllocPool& fVertexPool;
+ GrIndexBufferAllocPool& fIndexPool;
struct GeometryPoolState {
const GrVertexBuffer* fPoolVertexBuffer;
« 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