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

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

Issue 858343002: Rename GrOptDrawState to GrPipeline and GrDrawState to GrPipelineBuilder (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: some line length stuff Created 5 years, 11 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 2011 Google Inc. 2 * Copyright 2015 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 GrDrawState_DEFINED 8 #ifndef GrPipelineBuilder_DEFINED
9 #define GrDrawState_DEFINED 9 #define GrPipelineBuilder_DEFINED
10 10
11 11
12 #include "GrBlend.h" 12 #include "GrBlend.h"
13 #include "GrDrawTargetCaps.h" 13 #include "GrDrawTargetCaps.h"
14 #include "GrGeometryProcessor.h" 14 #include "GrGeometryProcessor.h"
15 #include "GrGpuResourceRef.h" 15 #include "GrGpuResourceRef.h"
16 #include "GrFragmentStage.h" 16 #include "GrFragmentStage.h"
17 #include "GrProcOptInfo.h" 17 #include "GrProcOptInfo.h"
18 #include "GrRenderTarget.h" 18 #include "GrRenderTarget.h"
19 #include "GrStencil.h" 19 #include "GrStencil.h"
20 #include "GrXferProcessor.h" 20 #include "GrXferProcessor.h"
21 #include "SkMatrix.h" 21 #include "SkMatrix.h"
22 #include "effects/GrCoverageSetOpXP.h" 22 #include "effects/GrCoverageSetOpXP.h"
23 #include "effects/GrDisableColorXP.h" 23 #include "effects/GrDisableColorXP.h"
24 #include "effects/GrPorterDuffXferProcessor.h" 24 #include "effects/GrPorterDuffXferProcessor.h"
25 #include "effects/GrSimpleTextureEffect.h" 25 #include "effects/GrSimpleTextureEffect.h"
26 26
27 class GrDrawTargetCaps; 27 class GrDrawTargetCaps;
28 class GrPaint; 28 class GrPaint;
29 class GrTexture; 29 class GrTexture;
30 30
31 class GrDrawState { 31 class GrPipelineBuilder {
32 public: 32 public:
33 GrDrawState(); 33 GrPipelineBuilder();
34
34 /** 35 /**
35 * Copies another draw state. 36 * Copies another pipeline builder.
36 **/ 37 **/
37 GrDrawState(const GrDrawState& state) { 38 GrPipelineBuilder(const GrPipelineBuilder& state) {
38 SkDEBUGCODE(fBlockEffectRemovalCnt = 0;) 39 SkDEBUGCODE(fBlockEffectRemovalCnt = 0;)
39 *this = state; 40 *this = state;
40 } 41 }
41 42
42 virtual ~GrDrawState(); 43 virtual ~GrPipelineBuilder();
43 44
44 /** 45 /**
45 * Initializes the GrDrawState based on a GrPaint, view matrix and render ta rget. Note that 46 * Initializes the GrPipelineBuilder based on a GrPaint, view matrix and ren der target. Note that
46 * GrDrawState encompasses more than GrPaint. Aspects of GrDrawState that ha ve no GrPaint 47 * GrPipelineBuilder encompasses more than GrPaint. Aspects of GrPipelineBui lder that have no GrPaint
joshualitt 2015/01/22 15:55:08 \n
egdaniel 2015/01/22 16:28:56 Done.
47 * equivalents are set to default values with the exception of vertex attrib ute state which 48 * equivalents are set to default values with the exception of vertex attrib ute state which
48 * is unmodified by this function and clipping which will be enabled. 49 * is unmodified by this function and clipping which will be enabled.
49 */ 50 */
50 void setFromPaint(const GrPaint&, GrRenderTarget*); 51 void setFromPaint(const GrPaint&, GrRenderTarget*);
51 52
52 /// @} 53 /// @}
53 54
54 /** 55 /**
55 * Depending on features available in the underlying 3D API and the color bl end mode requested 56 * Depending on features available in the underlying 3D API and the color bl end mode requested
56 * it may or may not be possible to correctly blend with fractional pixel co verage generated by 57 * it may or may not be possible to correctly blend with fractional pixel co verage generated by
57 * the fragment shader. 58 * the fragment shader.
58 * 59 *
59 * This function considers the current draw state and the draw target's capa bilities to 60 * This function considers the current pipeline builder and the draw target' s capabilities to
joshualitt 2015/01/22 15:55:08 Gr
egdaniel 2015/01/22 16:28:56 Done.
60 * determine whether coverage can be handled correctly. This function assume s that the caller 61 * determine whether coverage can be handled correctly. This function assume s that the caller
61 * intends to specify fractional pixel coverage via a primitive processor bu t may not have 62 * intends to specify fractional pixel coverage via a primitive processor bu t may not have
62 * specified it yet. 63 * specified it yet.
63 */ 64 */
64 bool canUseFracCoveragePrimProc(GrColor color, const GrDrawTargetCaps& caps) const; 65 bool canUseFracCoveragePrimProc(GrColor color, const GrDrawTargetCaps& caps) const;
65 66
66 /** 67 /**
67 * This function returns true if the render target destination pixel values will be read for 68 * This function returns true if the render target destination pixel values will be read for
68 * blending during draw. 69 * blending during draw.
69 */ 70 */
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 this->addColorProcessor(GrSimpleTextureEffect::Create(texture, matrix, p arams))->unref(); 165 this->addColorProcessor(GrSimpleTextureEffect::Create(texture, matrix, p arams))->unref();
165 } 166 }
166 167
167 void addCoverageTextureProcessor(GrTexture* texture, 168 void addCoverageTextureProcessor(GrTexture* texture,
168 const SkMatrix& matrix, 169 const SkMatrix& matrix,
169 const GrTextureParams& params) { 170 const GrTextureParams& params) {
170 this->addCoverageProcessor(GrSimpleTextureEffect::Create(texture, matrix , params))->unref(); 171 this->addCoverageProcessor(GrSimpleTextureEffect::Create(texture, matrix , params))->unref();
171 } 172 }
172 173
173 /** 174 /**
174 * When this object is destroyed it will remove any color/coverage effects f rom the draw state 175 * When this object is destroyed it will remove any color/coverage effects f rom the pipeline
joshualitt 2015/01/22 15:55:08 Gr
egdaniel 2015/01/22 16:28:56 Done.
175 * that were added after its constructor. 176 * builder that were added after its constructor.
176 * 177 *
177 * This class has strange behavior around geometry processor. If there is a GP on the draw state 178 * This class has strange behavior around geometry processor. If there is a GP on the pipeline
178 * it will assert that the GP is not modified until after the destructor of the ARE. If the 179 * builder it will assert that the GP is not modified until after the destru ctor of the ARE. If
179 * draw state has a NULL GP when the ARE is constructed then it will reset i t to null in the 180 * the pipeline builder has a NULL GP when the ARE is constructed then it wi ll reset it to null
180 * destructor. 181 * in the destructor.
181 *
182 * TODO: We'd prefer for the ARE to just save and restore the GP. However, t his would add
183 * significant complexity to the multi-ref architecture for deferred drawing . Once GrDrawState
184 * and GrOptDrawState are fully separated then GrDrawState will never be in the deferred
185 * execution state and GrOptDrawState always will be (and will be immutable and therefore
186 * unable to have an ARE). At this point we can restore sanity and have the ARE save and restore
187 * the GP.
188 */ 182 */
189 class AutoRestoreEffects : public ::SkNoncopyable { 183 class AutoRestoreEffects : public ::SkNoncopyable {
190 public: 184 public:
191 AutoRestoreEffects() 185 AutoRestoreEffects()
192 : fDrawState(NULL) 186 : fPipelineBuilder(NULL)
193 , fColorEffectCnt(0) 187 , fColorEffectCnt(0)
194 , fCoverageEffectCnt(0) {} 188 , fCoverageEffectCnt(0) {}
195 189
196 AutoRestoreEffects(GrDrawState* ds) 190 AutoRestoreEffects(GrPipelineBuilder* ds)
197 : fDrawState(NULL) 191 : fPipelineBuilder(NULL)
198 , fColorEffectCnt(0) 192 , fColorEffectCnt(0)
199 , fCoverageEffectCnt(0) { 193 , fCoverageEffectCnt(0) {
200 this->set(ds); 194 this->set(ds);
201 } 195 }
202 196
203 ~AutoRestoreEffects() { this->set(NULL); } 197 ~AutoRestoreEffects() { this->set(NULL); }
204 198
205 void set(GrDrawState* ds); 199 void set(GrPipelineBuilder* ds);
206 200
207 bool isSet() const { return SkToBool(fDrawState); } 201 bool isSet() const { return SkToBool(fPipelineBuilder); }
208 202
209 private: 203 private:
210 GrDrawState* fDrawState; 204 GrPipelineBuilder* fPipelineBuilder;
211 int fColorEffectCnt; 205 int fColorEffectCnt;
212 int fCoverageEffectCnt; 206 int fCoverageEffectCnt;
213 }; 207 };
214 208
215 /** 209 /**
216 * AutoRestoreStencil 210 * AutoRestoreStencil
217 * 211 *
218 * This simple struct saves and restores the stencil settings 212 * This simple struct saves and restores the stencil settings
219 */ 213 */
220 class AutoRestoreStencil : public ::SkNoncopyable { 214 class AutoRestoreStencil : public ::SkNoncopyable {
221 public: 215 public:
222 AutoRestoreStencil() : fDrawState(NULL) {} 216 AutoRestoreStencil() : fPipelineBuilder(NULL) {}
223 217
224 AutoRestoreStencil(GrDrawState* ds) : fDrawState(NULL) { this->set(ds); } 218 AutoRestoreStencil(GrPipelineBuilder* ds) : fPipelineBuilder(NULL) { thi s->set(ds); }
225 219
226 ~AutoRestoreStencil() { this->set(NULL); } 220 ~AutoRestoreStencil() { this->set(NULL); }
227 221
228 void set(GrDrawState* ds) { 222 void set(GrPipelineBuilder* ds) {
229 if (fDrawState) { 223 if (fPipelineBuilder) {
230 fDrawState->setStencil(fStencilSettings); 224 fPipelineBuilder->setStencil(fStencilSettings);
231 } 225 }
232 fDrawState = ds; 226 fPipelineBuilder = ds;
233 if (ds) { 227 if (ds) {
234 fStencilSettings = ds->getStencil(); 228 fStencilSettings = ds->getStencil();
235 } 229 }
236 } 230 }
237 231
238 bool isSet() const { return SkToBool(fDrawState); } 232 bool isSet() const { return SkToBool(fPipelineBuilder); }
239 233
240 private: 234 private:
241 GrDrawState* fDrawState; 235 GrPipelineBuilder* fPipelineBuilder;
242 GrStencilSettings fStencilSettings; 236 GrStencilSettings fStencilSettings;
243 }; 237 };
244 238
245 /// @} 239 /// @}
246 240
247 /////////////////////////////////////////////////////////////////////////// 241 ///////////////////////////////////////////////////////////////////////////
248 /// @name Blending 242 /// @name Blending
249 //// 243 ////
250 244
251 /** 245 /**
252 * Determines whether multiplying the computed per-pixel color by the pixel' s fractional 246 * Determines whether multiplying the computed per-pixel color by the pixel' s fractional
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 */ 384 */
391 void setDrawFace(DrawFace face) { 385 void setDrawFace(DrawFace face) {
392 SkASSERT(kInvalid_DrawFace != face); 386 SkASSERT(kInvalid_DrawFace != face);
393 fDrawFace = face; 387 fDrawFace = face;
394 } 388 }
395 389
396 /// @} 390 /// @}
397 391
398 /////////////////////////////////////////////////////////////////////////// 392 ///////////////////////////////////////////////////////////////////////////
399 393
400 GrDrawState& operator= (const GrDrawState& that); 394 GrPipelineBuilder& operator= (const GrPipelineBuilder& that);
401 395
402 private: 396 private:
403 const GrProcOptInfo& colorProcInfo(const GrPrimitiveProcessor* pp) const { 397 const GrProcOptInfo& colorProcInfo(const GrPrimitiveProcessor* pp) const {
404 this->calcColorInvariantOutput(pp); 398 this->calcColorInvariantOutput(pp);
405 return fColorProcInfo; 399 return fColorProcInfo;
406 } 400 }
407 401
408 const GrProcOptInfo& coverageProcInfo(const GrPrimitiveProcessor* pp) const { 402 const GrProcOptInfo& coverageProcInfo(const GrPrimitiveProcessor* pp) const {
409 this->calcCoverageInvariantOutput(pp); 403 this->calcCoverageInvariantOutput(pp);
410 return fCoverageProcInfo; 404 return fCoverageProcInfo;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 444
451 mutable GrProcOptInfo fColorProcInfo; 445 mutable GrProcOptInfo fColorProcInfo;
452 mutable GrProcOptInfo fCoverageProcInfo; 446 mutable GrProcOptInfo fCoverageProcInfo;
453 mutable bool fColorProcInfoValid; 447 mutable bool fColorProcInfoValid;
454 mutable bool fCoverageProcInfoValid; 448 mutable bool fCoverageProcInfoValid;
455 mutable GrColor fColorCache; 449 mutable GrColor fColorCache;
456 mutable GrColor fCoverageCache; 450 mutable GrColor fCoverageCache;
457 mutable const GrPrimitiveProcessor* fColorPrimProc; 451 mutable const GrPrimitiveProcessor* fColorPrimProc;
458 mutable const GrPrimitiveProcessor* fCoveragePrimProc; 452 mutable const GrPrimitiveProcessor* fCoveragePrimProc;
459 453
460 friend class GrOptDrawState; 454 friend class GrPipeline;
461 }; 455 };
462 456
463 #endif 457 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698