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

Side by Side Diff: src/gpu/GrDrawTarget.h

Issue 2035823002: Make GrClipMaskManager stateless and push GrPipelineBuilder construction downstack (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Address code review comments Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2010 Google Inc. 2 * Copyright 2010 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef GrDrawTarget_DEFINED 8 #ifndef GrDrawTarget_DEFINED
9 #define GrDrawTarget_DEFINED 9 #define GrDrawTarget_DEFINED
10 10
11 #include "GrClip.h" 11 #include "GrClip.h"
12 #include "GrClipMaskManager.h"
13 #include "GrContext.h" 12 #include "GrContext.h"
14 #include "GrPathProcessor.h" 13 #include "GrPathProcessor.h"
15 #include "GrPrimitiveProcessor.h" 14 #include "GrPrimitiveProcessor.h"
16 #include "GrPathRendering.h" 15 #include "GrPathRendering.h"
17 #include "GrPipelineBuilder.h" 16 #include "GrPipelineBuilder.h"
18 #include "GrXferProcessor.h" 17 #include "GrXferProcessor.h"
19 18
20 #include "batches/GrDrawBatch.h" 19 #include "batches/GrDrawBatch.h"
21 20
22 #include "SkClipStack.h" 21 #include "SkClipStack.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 * Together these two functions flush all queued up draws to the Gpu. 97 * Together these two functions flush all queued up draws to the Gpu.
99 */ 98 */
100 void prepareBatches(GrBatchFlushState* flushState); 99 void prepareBatches(GrBatchFlushState* flushState);
101 void drawBatches(GrBatchFlushState* flushState); 100 void drawBatches(GrBatchFlushState* flushState);
102 101
103 /** 102 /**
104 * Gets the capabilities of the draw target. 103 * Gets the capabilities of the draw target.
105 */ 104 */
106 const GrCaps* caps() const { return fGpu->caps(); } 105 const GrCaps* caps() const { return fGpu->caps(); }
107 106
108 void drawBatch(const GrPipelineBuilder&, const GrClip&, GrDrawBatch*); 107 void drawBatch(const GrPipelineBuilder&, GrDrawContext*, const GrClip&, GrDr awBatch*);
109 108
110 /** 109 /**
111 * Draws path into the stencil buffer. The fill must be either even/odd or 110 * Draws path into the stencil buffer. The fill must be either even/odd or
112 * winding (not inverse or hairline). It will respect the HW antialias flag 111 * winding (not inverse or hairline). It will respect the HW antialias flag
113 * on the GrPipelineBuilder (if possible in the 3D API). Note, we will neve r have an inverse 112 * on the GrPipelineBuilder (if possible in the 3D API). Note, we will neve r have an inverse
114 * fill with stencil path 113 * fill with stencil path
115 */ 114 */
116 void stencilPath(const GrPipelineBuilder&, const GrClip&, const SkMatrix& vi ewMatrix, 115 void stencilPath(const GrPipelineBuilder&, GrDrawContext*,
116 const GrClip&, const SkMatrix& viewMatrix,
117 const GrPath*, GrPathRendering::FillType); 117 const GrPath*, GrPathRendering::FillType);
118 118
119 /** 119 /**
120 * Clear the passed in render target. Ignores the GrPipelineBuilder and clip . Clears the whole 120 * Clear the passed in render target. Ignores the GrPipelineBuilder and clip . Clears the whole
121 * thing if rect is nullptr, otherwise just the rect. If canIgnoreRect is se t then the entire 121 * thing if rect is nullptr, otherwise just the rect. If canIgnoreRect is se t then the entire
122 * render target can be optionally cleared. 122 * render target can be optionally cleared.
123 */ 123 */
124 void clear(const SkIRect* rect, 124 void clear(const SkIRect* rect,
125 GrColor color, 125 GrColor color,
126 bool canIgnoreRect, 126 bool canIgnoreRect,
127 GrRenderTarget* renderTarget); 127 GrDrawContext*);
128 128
129 /** Discards the contents render target. */ 129 /** Discards the contents render target. */
130 void discard(GrRenderTarget*); 130 void discard(GrRenderTarget*);
131 131
132 /** 132 /**
133 * Copies a pixel rectangle from one surface to another. This call may final ize 133 * Copies a pixel rectangle from one surface to another. This call may final ize
134 * reserved vertex/index data (as though a draw call was made). The src pixe ls 134 * reserved vertex/index data (as though a draw call was made). The src pixe ls
135 * copied are specified by srcRect. They are copied to a rect of the same 135 * copied are specified by srcRect. They are copied to a rect of the same
136 * size in dst with top left at dstPoint. If the src rect is clipped by the 136 * size in dst with top left at dstPoint. If the src rect is clipped by the
137 * src bounds then pixel values in the dst rect corresponding to area clipp ed 137 * src bounds then pixel values in the dst rect corresponding to area clipp ed
(...skipping 21 matching lines...) Expand all
159 GrDrawTarget* fDrawTarget; 159 GrDrawTarget* fDrawTarget;
160 friend class GrClipMaskManager; 160 friend class GrClipMaskManager;
161 }; 161 };
162 162
163 const CMMAccess cmmAccess() { return CMMAccess(this); } 163 const CMMAccess cmmAccess() { return CMMAccess(this); }
164 164
165 GrAuditTrail* getAuditTrail() const { return fAuditTrail; } 165 GrAuditTrail* getAuditTrail() const { return fAuditTrail; }
166 166
167 private: 167 private:
168 friend class GrDrawingManager; // for resetFlag & TopoSortTraits 168 friend class GrDrawingManager; // for resetFlag & TopoSortTraits
169 friend class GrDrawContextPriv; // for clearStencilClip
169 170
170 enum Flags { 171 enum Flags {
171 kClosed_Flag = 0x01, //!< This drawTarget can't accept any more bat ches 172 kClosed_Flag = 0x01, //!< This drawTarget can't accept any more bat ches
172 173
173 kWasOutput_Flag = 0x02, //!< Flag for topological sorting 174 kWasOutput_Flag = 0x02, //!< Flag for topological sorting
174 kTempMark_Flag = 0x04, //!< Flag for topological sorting 175 kTempMark_Flag = 0x04, //!< Flag for topological sorting
175 }; 176 };
176 177
177 void setFlag(uint32_t flag) { 178 void setFlag(uint32_t flag) {
178 fFlags |= flag; 179 fFlags |= flag;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 const GrPipelineOptimizations& optimizations, 222 const GrPipelineOptimizations& optimizations,
222 GrXferProcessor::DstTexture*, 223 GrXferProcessor::DstTexture*,
223 const SkRect& batchBounds); 224 const SkRect& batchBounds);
224 225
225 void addDependency(GrDrawTarget* dependedOn); 226 void addDependency(GrDrawTarget* dependedOn);
226 227
227 // Used only by CMM. 228 // Used only by CMM.
228 void clearStencilClip(const SkIRect&, bool insideClip, GrRenderTarget*); 229 void clearStencilClip(const SkIRect&, bool insideClip, GrRenderTarget*);
229 230
230 SkSTArray<256, SkAutoTUnref<GrBatch>, true> fBatches; 231 SkSTArray<256, SkAutoTUnref<GrBatch>, true> fBatches;
231 SkAutoTDelete<GrClipMaskManager> fClipMaskManager;
232 // The context is only in service of the clip mask manager, remove once CMM doesn't need this. 232 // The context is only in service of the clip mask manager, remove once CMM doesn't need this.
233 GrContext* fContext; 233 GrContext* fContext;
234 GrGpu* fGpu; 234 GrGpu* fGpu;
235 GrResourceProvider* fResourceProvider; 235 GrResourceProvider* fResourceProvider;
236 GrAuditTrail* fAuditTrail; 236 GrAuditTrail* fAuditTrail;
237 237
238 SkDEBUGCODE(int fDebugID;) 238 SkDEBUGCODE(int fDebugID;)
239 uint32_t fFlags; 239 uint32_t fFlags;
240 240
241 // 'this' drawTarget relies on the output of the drawTargets in 'fDependenci es' 241 // 'this' drawTarget relies on the output of the drawTargets in 'fDependenci es'
242 SkTDArray<GrDrawTarget*> fDependencies; 242 SkTDArray<GrDrawTarget*> fDependencies;
243 GrRenderTarget* fRenderTarget; 243 GrRenderTarget* fRenderTarget;
244 244
245 bool fClipBatchToBounds; 245 bool fClipBatchToBounds;
246 bool fDrawBatchBounds; 246 bool fDrawBatchBounds;
247 int fMaxBatchLookback; 247 int fMaxBatchLookback;
248 int fMaxBatchLookahead; 248 int fMaxBatchLookahead;
249 249
250 typedef SkRefCnt INHERITED; 250 typedef SkRefCnt INHERITED;
251 }; 251 };
252 252
253 #endif 253 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698