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

Unified Diff: src/gpu/GrDrawTarget.h

Issue 912413002: Pass in ProcOptInfos into willNeedDstCopy on XPs (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Review cleanup Created 5 years, 10 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/effects/SkArithmeticMode_gpu.cpp ('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 1b6651716c3f2f0fcc54f58f8f8159b01e63ca32..a26e02534e9030fa2e587488da6f2370e91eaeff 100644
--- a/src/gpu/GrDrawTarget.h
+++ b/src/gpu/GrDrawTarget.h
@@ -31,6 +31,7 @@ class GrClipData;
class GrDrawTargetCaps;
class GrPath;
class GrPathRange;
+class GrPipeline;
class GrDrawTarget : public SkRefCnt {
public:
@@ -678,9 +679,36 @@ protected:
// but couldn't be made. Otherwise, returns true. This method needs to be protected because it
// needs to be accessed by GLPrograms to setup a correct drawstate
bool setupDstReadIfNecessary(const GrPipelineBuilder&,
+ const GrProcOptInfo& colorPOI,
+ const GrProcOptInfo& coveragePOI,
GrDeviceCoordTexture* dstCopy,
const SkRect* drawBounds);
+ struct PipelineInfo {
+ PipelineInfo(GrPipelineBuilder* pipelineBuilder, GrScissorState* scissor,
+ const GrPrimitiveProcessor* primProc, const SkRect* devBounds,
+ GrDrawTarget* target);
+
+ PipelineInfo(GrPipelineBuilder* pipelineBuilder, GrScissorState* scissor,
+ const GrBatch* batch, const SkRect* devBounds, GrDrawTarget* target);
+
+ bool willBlendWithDst(const GrPrimitiveProcessor* primProc) const {
+ return fPipelineBuilder->willBlendWithDst(primProc);
+ }
+ private:
+ friend class GrDrawTarget;
+
+ bool mustSkipDraw() const { return (NULL == fPipelineBuilder); }
+
+ GrPipelineBuilder* fPipelineBuilder;
+ GrScissorState* fScissor;
+ GrProcOptInfo fColorPOI;
+ GrProcOptInfo fCoveragePOI;
+ GrDeviceCoordTexture fDstCopy;
+ };
+
+ void setupPipeline(const PipelineInfo& pipelineInfo, GrPipeline* pipeline);
+
private:
/**
* This will be called before allocating a texture as a dst for copySurface. This function
@@ -717,14 +745,8 @@ private:
virtual void geometrySourceWillPush() = 0;
virtual void geometrySourceWillPop(const GeometrySrcState& restoredState) = 0;
// subclass called to perform drawing
- virtual void onDraw(const GrPipelineBuilder&,
- const GrGeometryProcessor*,
- const DrawInfo&,
- const GrScissorState&) = 0;
- virtual void onDrawBatch(GrBatch*,
- const GrPipelineBuilder&,
- const GrScissorState&,
- const SkRect* devBounds) = 0;
+ virtual void onDraw(const GrGeometryProcessor*, const DrawInfo&, const PipelineInfo&) = 0;
+ virtual void onDrawBatch(GrBatch*, const PipelineInfo&) = 0;
// TODO copy in order drawbuffer onDrawRect to here
virtual void onDrawRect(GrPipelineBuilder*,
GrColor color,
@@ -738,23 +760,19 @@ private:
const GrPath*,
const GrScissorState&,
const GrStencilSettings&) = 0;
- virtual void onDrawPath(const GrPipelineBuilder&,
- const GrPathProcessor*,
+ virtual void onDrawPath(const GrPathProcessor*,
const GrPath*,
- const GrScissorState&,
const GrStencilSettings&,
- const SkRect* devBounds) = 0;
- virtual void onDrawPaths(const GrPipelineBuilder&,
- const GrPathProcessor*,
+ const PipelineInfo&) = 0;
+ virtual void onDrawPaths(const GrPathProcessor*,
const GrPathRange*,
const void* indices,
PathIndexType,
const float transformValues[],
PathTransformType,
int count,
- const GrScissorState&,
const GrStencilSettings&,
- const SkRect* devBounds) = 0;
+ const PipelineInfo&) = 0;
virtual void onClear(const SkIRect* rect, GrColor color, bool canIgnoreRect,
GrRenderTarget* renderTarget) = 0;
« no previous file with comments | « src/effects/SkArithmeticMode_gpu.cpp ('k') | src/gpu/GrDrawTarget.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698