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

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

Issue 545253002: Change behavior of GrDS::AutoEffectRestort wrt GPs. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: update Created 6 years, 3 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 | « no previous file | src/gpu/GrDrawState.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 2011 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 GrDrawState_DEFINED
9 #define GrDrawState_DEFINED 9 #define GrDrawState_DEFINED
10 10
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 this->addColorEffect(GrSimpleTextureEffect::Create(texture, matrix, para ms))->unref(); 230 this->addColorEffect(GrSimpleTextureEffect::Create(texture, matrix, para ms))->unref();
231 } 231 }
232 232
233 void addCoverageTextureEffect(GrTexture* texture, 233 void addCoverageTextureEffect(GrTexture* texture,
234 const SkMatrix& matrix, 234 const SkMatrix& matrix,
235 const GrTextureParams& params) { 235 const GrTextureParams& params) {
236 this->addCoverageEffect(GrSimpleTextureEffect::Create(texture, matrix, p arams))->unref(); 236 this->addCoverageEffect(GrSimpleTextureEffect::Create(texture, matrix, p arams))->unref();
237 } 237 }
238 238
239 /** 239 /**
240 * When this object is destroyed it will remove any effects from the draw st ate that were added 240 * When this object is destroyed it will remove any color/coverage effects f rom the draw state
241 * after its constructor. 241 * that were added after its constructor.
242 *
243 * This class has strange behavior around geometry processor. If there is a GP on the draw state
244 * it will assert that the GP is not modified until after the destructor of the ARE. If the
robertphillips 2014/09/05 16:05:53 extra '.' ?
bsalomon 2014/09/05 16:10:54 Done.
245 * draw state has a NULL GP when the ARE. is constructed then it will reset it to null in the
246 * destructor.
247 *
248 * TODO: We'd prefer for the ARE to just save and restore the GP. However, t his would add
249 * significant complexity to the multi-ref architecture for deferred drawing . Once GrDrawState
250 * and GrOptDrawState are fully separated then GrDrawState will never be in the deferred
251 * execution state and GrOptDrawState always will be (and will be immutable and therefore
252 * unable to have an ARE). At this point we can restore sanity and have the ARE save and restore
253 * the GP.
242 */ 254 */
243 class AutoRestoreEffects : public ::SkNoncopyable { 255 class AutoRestoreEffects : public ::SkNoncopyable {
244 public: 256 public:
245 AutoRestoreEffects() : fDrawState(NULL), fColorEffectCnt(0), fCoverageEf fectCnt(0) {} 257 AutoRestoreEffects()
258 : fDrawState(NULL)
259 , fOriginalGP(NULL)
260 , fColorEffectCnt(0)
261 , fCoverageEffectCnt(0) {}
246 262
247 AutoRestoreEffects(GrDrawState* ds) : fDrawState(NULL), fColorEffectCnt( 0), fCoverageEffectCnt(0) { 263 AutoRestoreEffects(GrDrawState* ds)
264 : fDrawState(NULL)
265 , fOriginalGP(NULL)
266 , fColorEffectCnt(0)
267 , fCoverageEffectCnt(0) {
248 this->set(ds); 268 this->set(ds);
249 } 269 }
250 270
251 ~AutoRestoreEffects() { this->set(NULL); } 271 ~AutoRestoreEffects() { this->set(NULL); }
252 272
253 void set(GrDrawState* ds); 273 void set(GrDrawState* ds);
254 274
255 bool isSet() const { return NULL != fDrawState; } 275 bool isSet() const { return NULL != fDrawState; }
256 276
257 private: 277 private:
258 GrDrawState* fDrawState; 278 GrDrawState* fDrawState;
259 SkAutoTDelete<GrEffectStage> fGeometryProcessor; 279 const GrEffect* fOriginalGP;
260 int fColorEffectCnt; 280 int fColorEffectCnt;
261 int fCoverageEffectCnt; 281 int fCoverageEffectCnt;
262 }; 282 };
263 283
264 /// @} 284 /// @}
265 285
266 /////////////////////////////////////////////////////////////////////////// 286 ///////////////////////////////////////////////////////////////////////////
267 /// @name Blending 287 /// @name Blending
268 //// 288 ////
269 289
270 /** 290 /**
271 * Sets the blending function coefficients. 291 * Sets the blending function coefficients.
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 // Some of the auto restore objects assume that no effects are removed durin g their lifetime. 564 // Some of the auto restore objects assume that no effects are removed durin g their lifetime.
545 // This is used to assert that this condition holds. 565 // This is used to assert that this condition holds.
546 SkDEBUGCODE(int fBlockEffectRemovalCnt;) 566 SkDEBUGCODE(int fBlockEffectRemovalCnt;)
547 567
548 void internalSetVertexAttribs(const GrVertexAttrib attribs[], int count, siz e_t stride); 568 void internalSetVertexAttribs(const GrVertexAttrib attribs[], int count, siz e_t stride);
549 569
550 typedef GrRODrawState INHERITED; 570 typedef GrRODrawState INHERITED;
551 }; 571 };
552 572
553 #endif 573 #endif
OLDNEW
« no previous file with comments | « no previous file | src/gpu/GrDrawState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698