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

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: more nits 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
« no previous file with comments | « src/gpu/GrPipeline.cpp ('k') | src/gpu/GrPipelineBuilder.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 * Copies another draw state. 35 GrPipelineBuilder(const GrPipelineBuilder& pipelineBuilder) {
36 **/
37 GrDrawState(const GrDrawState& state) {
38 SkDEBUGCODE(fBlockEffectRemovalCnt = 0;) 36 SkDEBUGCODE(fBlockEffectRemovalCnt = 0;)
39 *this = state; 37 *this = pipelineBuilder;
40 } 38 }
41 39
42 virtual ~GrDrawState(); 40 virtual ~GrPipelineBuilder();
43 41
44 /** 42 /**
45 * Initializes the GrDrawState based on a GrPaint, view matrix and render ta rget. Note that 43 * Initializes the GrPipelineBuilder based on a GrPaint, view matrix and ren der target. Note
46 * GrDrawState encompasses more than GrPaint. Aspects of GrDrawState that ha ve no GrPaint 44 * that GrPipelineBuilder encompasses more than GrPaint. Aspects of GrPipeli neBuilder that have
47 * equivalents are set to default values with the exception of vertex attrib ute state which 45 * no GrPaint equivalents are set to default values with the exception of ve rtex attribute state
48 * is unmodified by this function and clipping which will be enabled. 46 * which is unmodified by this function and clipping which will be enabled.
49 */ 47 */
50 void setFromPaint(const GrPaint&, GrRenderTarget*); 48 void setFromPaint(const GrPaint&, GrRenderTarget*);
51 49
52 /// @} 50 /// @}
53 51
54 /** 52 /**
55 * Depending on features available in the underlying 3D API and the color bl end mode requested 53 * 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 54 * it may or may not be possible to correctly blend with fractional pixel co verage generated by
57 * the fragment shader. 55 * the fragment shader.
58 * 56 *
59 * This function considers the current draw state and the draw target's capa bilities to 57 * This function considers the current GrPipelineBuilder and the draw target 's capabilities to
60 * determine whether coverage can be handled correctly. This function assume s that the caller 58 * 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 59 * intends to specify fractional pixel coverage via a primitive processor bu t may not have
62 * specified it yet. 60 * specified it yet.
63 */ 61 */
64 bool canUseFracCoveragePrimProc(GrColor color, const GrDrawTargetCaps& caps) const; 62 bool canUseFracCoveragePrimProc(GrColor color, const GrDrawTargetCaps& caps) const;
65 63
66 /** 64 /**
67 * This function returns true if the render target destination pixel values will be read for 65 * This function returns true if the render target destination pixel values will be read for
68 * blending during draw. 66 * blending during draw.
69 */ 67 */
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 this->addColorProcessor(GrSimpleTextureEffect::Create(texture, matrix, p arams))->unref(); 162 this->addColorProcessor(GrSimpleTextureEffect::Create(texture, matrix, p arams))->unref();
165 } 163 }
166 164
167 void addCoverageTextureProcessor(GrTexture* texture, 165 void addCoverageTextureProcessor(GrTexture* texture,
168 const SkMatrix& matrix, 166 const SkMatrix& matrix,
169 const GrTextureParams& params) { 167 const GrTextureParams& params) {
170 this->addCoverageProcessor(GrSimpleTextureEffect::Create(texture, matrix , params))->unref(); 168 this->addCoverageProcessor(GrSimpleTextureEffect::Create(texture, matrix , params))->unref();
171 } 169 }
172 170
173 /** 171 /**
174 * When this object is destroyed it will remove any color/coverage effects f rom the draw state 172 * When this object is destroyed it will remove any color/coverage effects f rom the pipeline
175 * that were added after its constructor. 173 * builder that were added after its constructor.
176 * 174 *
177 * This class has strange behavior around geometry processor. If there is a GP on the draw state 175 * This class has strange behavior around geometry processor. If there is a GP on the
178 * it will assert that the GP is not modified until after the destructor of the ARE. If the 176 * GrPipelineBuilder it will assert that the GP is not modified until after the destructor of
179 * draw state has a NULL GP when the ARE is constructed then it will reset i t to null in the 177 * the ARE. If the GrPipelineBuilder has a NULL GP when the ARE is construct ed then it will reset
180 * destructor. 178 * it to null 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 */ 179 */
189 class AutoRestoreEffects : public ::SkNoncopyable { 180 class AutoRestoreEffects : public ::SkNoncopyable {
190 public: 181 public:
191 AutoRestoreEffects() 182 AutoRestoreEffects()
192 : fDrawState(NULL) 183 : fPipelineBuilder(NULL)
193 , fColorEffectCnt(0) 184 , fColorEffectCnt(0)
194 , fCoverageEffectCnt(0) {} 185 , fCoverageEffectCnt(0) {}
195 186
196 AutoRestoreEffects(GrDrawState* ds) 187 AutoRestoreEffects(GrPipelineBuilder* ds)
197 : fDrawState(NULL) 188 : fPipelineBuilder(NULL)
198 , fColorEffectCnt(0) 189 , fColorEffectCnt(0)
199 , fCoverageEffectCnt(0) { 190 , fCoverageEffectCnt(0) {
200 this->set(ds); 191 this->set(ds);
201 } 192 }
202 193
203 ~AutoRestoreEffects() { this->set(NULL); } 194 ~AutoRestoreEffects() { this->set(NULL); }
204 195
205 void set(GrDrawState* ds); 196 void set(GrPipelineBuilder* ds);
206 197
207 bool isSet() const { return SkToBool(fDrawState); } 198 bool isSet() const { return SkToBool(fPipelineBuilder); }
208 199
209 private: 200 private:
210 GrDrawState* fDrawState; 201 GrPipelineBuilder* fPipelineBuilder;
211 int fColorEffectCnt; 202 int fColorEffectCnt;
212 int fCoverageEffectCnt; 203 int fCoverageEffectCnt;
213 }; 204 };
214 205
215 /** 206 /**
216 * AutoRestoreStencil 207 * AutoRestoreStencil
217 * 208 *
218 * This simple struct saves and restores the stencil settings 209 * This simple struct saves and restores the stencil settings
219 */ 210 */
220 class AutoRestoreStencil : public ::SkNoncopyable { 211 class AutoRestoreStencil : public ::SkNoncopyable {
221 public: 212 public:
222 AutoRestoreStencil() : fDrawState(NULL) {} 213 AutoRestoreStencil() : fPipelineBuilder(NULL) {}
223 214
224 AutoRestoreStencil(GrDrawState* ds) : fDrawState(NULL) { this->set(ds); } 215 AutoRestoreStencil(GrPipelineBuilder* ds) : fPipelineBuilder(NULL) { thi s->set(ds); }
225 216
226 ~AutoRestoreStencil() { this->set(NULL); } 217 ~AutoRestoreStencil() { this->set(NULL); }
227 218
228 void set(GrDrawState* ds) { 219 void set(GrPipelineBuilder* ds) {
229 if (fDrawState) { 220 if (fPipelineBuilder) {
230 fDrawState->setStencil(fStencilSettings); 221 fPipelineBuilder->setStencil(fStencilSettings);
231 } 222 }
232 fDrawState = ds; 223 fPipelineBuilder = ds;
233 if (ds) { 224 if (ds) {
234 fStencilSettings = ds->getStencil(); 225 fStencilSettings = ds->getStencil();
235 } 226 }
236 } 227 }
237 228
238 bool isSet() const { return SkToBool(fDrawState); } 229 bool isSet() const { return SkToBool(fPipelineBuilder); }
239 230
240 private: 231 private:
241 GrDrawState* fDrawState; 232 GrPipelineBuilder* fPipelineBuilder;
242 GrStencilSettings fStencilSettings; 233 GrStencilSettings fStencilSettings;
243 }; 234 };
244 235
245 /// @} 236 /// @}
246 237
247 /////////////////////////////////////////////////////////////////////////// 238 ///////////////////////////////////////////////////////////////////////////
248 /// @name Blending 239 /// @name Blending
249 //// 240 ////
250 241
251 /** 242 /**
252 * Determines whether multiplying the computed per-pixel color by the pixel' s fractional 243 * 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 */ 381 */
391 void setDrawFace(DrawFace face) { 382 void setDrawFace(DrawFace face) {
392 SkASSERT(kInvalid_DrawFace != face); 383 SkASSERT(kInvalid_DrawFace != face);
393 fDrawFace = face; 384 fDrawFace = face;
394 } 385 }
395 386
396 /// @} 387 /// @}
397 388
398 /////////////////////////////////////////////////////////////////////////// 389 ///////////////////////////////////////////////////////////////////////////
399 390
400 GrDrawState& operator= (const GrDrawState& that); 391 GrPipelineBuilder& operator= (const GrPipelineBuilder& that);
401 392
402 private: 393 private:
403 const GrProcOptInfo& colorProcInfo(const GrPrimitiveProcessor* pp) const { 394 const GrProcOptInfo& colorProcInfo(const GrPrimitiveProcessor* pp) const {
404 this->calcColorInvariantOutput(pp); 395 this->calcColorInvariantOutput(pp);
405 return fColorProcInfo; 396 return fColorProcInfo;
406 } 397 }
407 398
408 const GrProcOptInfo& coverageProcInfo(const GrPrimitiveProcessor* pp) const { 399 const GrProcOptInfo& coverageProcInfo(const GrPrimitiveProcessor* pp) const {
409 this->calcCoverageInvariantOutput(pp); 400 this->calcCoverageInvariantOutput(pp);
410 return fCoverageProcInfo; 401 return fCoverageProcInfo;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 441
451 mutable GrProcOptInfo fColorProcInfo; 442 mutable GrProcOptInfo fColorProcInfo;
452 mutable GrProcOptInfo fCoverageProcInfo; 443 mutable GrProcOptInfo fCoverageProcInfo;
453 mutable bool fColorProcInfoValid; 444 mutable bool fColorProcInfoValid;
454 mutable bool fCoverageProcInfoValid; 445 mutable bool fCoverageProcInfoValid;
455 mutable GrColor fColorCache; 446 mutable GrColor fColorCache;
456 mutable GrColor fCoverageCache; 447 mutable GrColor fCoverageCache;
457 mutable const GrPrimitiveProcessor* fColorPrimProc; 448 mutable const GrPrimitiveProcessor* fColorPrimProc;
458 mutable const GrPrimitiveProcessor* fCoveragePrimProc; 449 mutable const GrPrimitiveProcessor* fCoveragePrimProc;
459 450
460 friend class GrOptDrawState; 451 friend class GrPipeline;
461 }; 452 };
462 453
463 #endif 454 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrPipeline.cpp ('k') | src/gpu/GrPipelineBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698