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

Unified Diff: src/gpu/GrDrawTarget.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/GrClipMaskManager.h ('k') | src/gpu/GrDrawTarget.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrDrawTarget.h
diff --git a/src/gpu/GrDrawTarget.h b/src/gpu/GrDrawTarget.h
index 47b439e114aba1e13ed70ee9d90c659a369b490f..60ce788e6277968431416cf043d36f927ee5888b 100644
--- a/src/gpu/GrDrawTarget.h
+++ b/src/gpu/GrDrawTarget.h
@@ -463,25 +463,43 @@ public:
/**
* For subclass internal use to invoke a call to onDraw(). See DrawInfo below.
*/
- void executeDraw(const DrawInfo& info) { this->onDraw(info); }
+ void executeDraw(const DrawInfo& info,
+ const GrClipMaskManager::ScissorState& scissorState) {
+ this->onDraw(info, scissorState);
+ }
+
+ /**
+ * For subclass internal use to invoke a call to onStencilPath().
+ */
+ void executeStencilPath(const GrPath* path,
+ const GrClipMaskManager::ScissorState& scissorState,
+ const GrStencilSettings& stencilSettings) {
+ this->onStencilPath(path, scissorState, stencilSettings);
+ }
/**
* For subclass internal use to invoke a call to onDrawPath().
*/
- void executeDrawPath(const GrPath* path, GrPathRendering::FillType fill,
+ void executeDrawPath(const GrPath* path,
+ const GrClipMaskManager::ScissorState& scissorState,
+ const GrStencilSettings& stencilSettings,
const GrDeviceCoordTexture* dstCopy) {
- this->onDrawPath(path, fill, dstCopy);
+ this->onDrawPath(path, scissorState, stencilSettings, dstCopy);
}
/**
* For subclass internal use to invoke a call to onDrawPaths().
*/
void executeDrawPaths(const GrPathRange* pathRange,
- const uint32_t indices[], int count,
- const float transforms[], PathTransformType transformsType,
- GrPathRendering::FillType fill,
+ const uint32_t indices[],
+ int count,
+ const float transforms[],
+ PathTransformType transformsType,
+ const GrClipMaskManager::ScissorState& scissorState,
+ const GrStencilSettings& stencilSettings,
const GrDeviceCoordTexture* dstCopy) {
- this->onDrawPaths(pathRange, indices, count, transforms, transformsType, fill, dstCopy);
+ this->onDrawPaths(pathRange, indices, count, transforms, transformsType,
+ scissorState, stencilSettings, dstCopy);
}
////////////////////////////////////////////////////////////////////////////
@@ -672,6 +690,9 @@ public:
virtual DrawToken getCurrentDrawToken() { return DrawToken(this, 0); }
+
+ bool programUnitTest(int maxStages);
+
protected:
// Extend access to GrDrawState::convertToPEndeingExec to subclasses.
void convertDrawStateToPendingExec(GrDrawState* ds) {
@@ -836,7 +857,7 @@ private:
virtual void geometrySourceWillPush() = 0;
virtual void geometrySourceWillPop(const GeometrySrcState& restoredState) = 0;
// subclass called to perform drawing
- virtual void onDraw(const DrawInfo&) = 0;
+ virtual void onDraw(const DrawInfo&, const GrClipMaskManager::ScissorState&) = 0;
// Implementation of drawRect. The geometry src and vertex attribs will already
// be saved before this is called and restored afterwards. A subclass may override
// this to perform more optimal rect rendering. Its draws should be funneled through
@@ -847,13 +868,21 @@ private:
const SkRect* localRect,
const SkMatrix* localMatrix);
- virtual void onStencilPath(const GrPath*, GrPathRendering::FillType) = 0;
- virtual void onDrawPath(const GrPath*, GrPathRendering::FillType,
+ virtual void onStencilPath(const GrPath*,
+ const GrClipMaskManager::ScissorState&,
+ const GrStencilSettings&) = 0;
+ virtual void onDrawPath(const GrPath*,
+ const GrClipMaskManager::ScissorState&,
+ const GrStencilSettings&,
const GrDeviceCoordTexture* dstCopy) = 0;
virtual void onDrawPaths(const GrPathRange*,
- const uint32_t indices[], int count,
- const float transforms[], PathTransformType,
- GrPathRendering::FillType, const GrDeviceCoordTexture*) = 0;
+ const uint32_t indices[],
+ int count,
+ const float transforms[],
+ PathTransformType,
+ const GrClipMaskManager::ScissorState&,
+ const GrStencilSettings&,
+ const GrDeviceCoordTexture*) = 0;
virtual void onClear(const SkIRect* rect, GrColor color, bool canIgnoreRect,
GrRenderTarget* renderTarget) = 0;
@@ -879,7 +908,12 @@ private:
// Check to see if this set of draw commands has been sent out
virtual bool isIssued(uint32_t drawID) { return true; }
+ void getPathStencilSettingsForFilltype(GrPathRendering::FillType, GrStencilSettings*);
virtual GrClipMaskManager* clipMaskManager() = 0;
+ virtual bool setupClip(const SkRect* devBounds,
+ GrDrawState::AutoRestoreEffects* are,
+ GrDrawState::AutoRestoreStencil* ars,
+ GrClipMaskManager::ScissorState* scissorState) = 0;
enum {
kPreallocGeoSrcStateStackCnt = 4,
@@ -937,6 +971,11 @@ protected:
private:
GrClipMaskManager* clipMaskManager() { return &fClipMaskManager; }
+ virtual bool setupClip(const SkRect* devBounds,
+ GrDrawState::AutoRestoreEffects* are,
+ GrDrawState::AutoRestoreStencil* ars,
+ GrClipMaskManager::ScissorState* scissorState) SK_OVERRIDE;
+
typedef GrDrawTarget INHERITED;
};
« no previous file with comments | « src/gpu/GrClipMaskManager.h ('k') | src/gpu/GrDrawTarget.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698