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

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

Issue 509153002: Initial change to create GeometryProcessor (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: adding some tests to ignore 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
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 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 /// pixel coverage rather than as input to the src/dst color blend step. 178 /// pixel coverage rather than as input to the src/dst color blend step.
179 /// 179 ///
180 /// The input color to the first color-stage is either the constant color or interpolated 180 /// The input color to the first color-stage is either the constant color or interpolated
181 /// per-vertex colors. The input to the first coverage stage is either a con stant coverage 181 /// per-vertex colors. The input to the first coverage stage is either a con stant coverage
182 /// (usually full-coverage) or interpolated per-vertex coverage. 182 /// (usually full-coverage) or interpolated per-vertex coverage.
183 /// 183 ///
184 /// See the documentation of kCoverageDrawing_StateBit for information about disabling the 184 /// See the documentation of kCoverageDrawing_StateBit for information about disabling the
185 /// the color / coverage distinction. 185 /// the color / coverage distinction.
186 //// 186 ////
187 187
188 const GrEffect* setGeometryProcessor(const GrEffect* effect, int attr0 = -1, int attr1 = -1) {
189 SkASSERT(NULL != effect);
190 SkASSERT(NULL == this->getGeometryProcessor());
191 fGeometryProcessor.reset(new GrEffectStage(effect, attr0, attr1));
192 this->invalidateBlendOptFlags();
193 return effect;
194 }
195
188 const GrEffect* addColorEffect(const GrEffect* effect, int attr0 = -1, int a ttr1 = -1) { 196 const GrEffect* addColorEffect(const GrEffect* effect, int attr0 = -1, int a ttr1 = -1) {
bsalomon 2014/08/29 15:07:25 Maybe a next small next change is to remove the at
joshua.litt 2014/09/02 16:06:21 yep, I am going to do a refactoring pass after thi
189 SkASSERT(NULL != effect); 197 SkASSERT(NULL != effect);
190 SkNEW_APPEND_TO_TARRAY(&fColorStages, GrEffectStage, (effect, attr0, att r1)); 198 SkNEW_APPEND_TO_TARRAY(&fColorStages, GrEffectStage, (effect, attr0, att r1));
191 this->invalidateBlendOptFlags(); 199 this->invalidateBlendOptFlags();
192 return effect; 200 return effect;
193 } 201 }
194 202
195 const GrEffect* addCoverageEffect(const GrEffect* effect, int attr0 = -1, in t attr1 = -1) { 203 const GrEffect* addCoverageEffect(const GrEffect* effect, int attr0 = -1, in t attr1 = -1) {
196 SkASSERT(NULL != effect); 204 SkASSERT(NULL != effect);
197 SkNEW_APPEND_TO_TARRAY(&fCoverageStages, GrEffectStage, (effect, attr0, attr1)); 205 SkNEW_APPEND_TO_TARRAY(&fCoverageStages, GrEffectStage, (effect, attr0, attr1));
198 this->invalidateBlendOptFlags(); 206 this->invalidateBlendOptFlags();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 } 243 }
236 244
237 ~AutoRestoreEffects() { this->set(NULL); } 245 ~AutoRestoreEffects() { this->set(NULL); }
238 246
239 void set(GrDrawState* ds); 247 void set(GrDrawState* ds);
240 248
241 bool isSet() const { return NULL != fDrawState; } 249 bool isSet() const { return NULL != fDrawState; }
242 250
243 private: 251 private:
244 GrDrawState* fDrawState; 252 GrDrawState* fDrawState;
253 SkAutoTUnref<GrEffectStage> fGeometryProcessor;
245 int fColorEffectCnt; 254 int fColorEffectCnt;
246 int fCoverageEffectCnt; 255 int fCoverageEffectCnt;
247 }; 256 };
248 257
249 /// @} 258 /// @}
250 259
251 /////////////////////////////////////////////////////////////////////////// 260 ///////////////////////////////////////////////////////////////////////////
252 /// @name Blending 261 /// @name Blending
253 //// 262 ////
254 263
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 /** Sets the draw state's matrix to identity. This can fail because the current view matrix 366 /** Sets the draw state's matrix to identity. This can fail because the current view matrix
358 is not invertible. */ 367 is not invertible. */
359 bool setIdentity(GrDrawState* drawState); 368 bool setIdentity(GrDrawState* drawState);
360 369
361 private: 370 private:
362 void doEffectCoordChanges(const SkMatrix& coordChangeMatrix); 371 void doEffectCoordChanges(const SkMatrix& coordChangeMatrix);
363 372
364 GrDrawState* fDrawState; 373 GrDrawState* fDrawState;
365 SkMatrix fViewMatrix; 374 SkMatrix fViewMatrix;
366 int fNumColorStages; 375 int fNumColorStages;
376 bool fHasGeometryProcesso r;
367 SkAutoSTArray<8, GrEffectStage::SavedCoordChange> fSavedCoordChanges; 377 SkAutoSTArray<8, GrEffectStage::SavedCoordChange> fSavedCoordChanges;
368 }; 378 };
369 379
370 /// @} 380 /// @}
371 381
372 /////////////////////////////////////////////////////////////////////////// 382 ///////////////////////////////////////////////////////////////////////////
373 /// @name Render Target 383 /// @name Render Target
374 //// 384 ////
375 385
376 /** 386 /**
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 // Some of the auto restore objects assume that no effects are removed durin g their lifetime. 572 // Some of the auto restore objects assume that no effects are removed durin g their lifetime.
563 // This is used to assert that this condition holds. 573 // This is used to assert that this condition holds.
564 SkDEBUGCODE(int fBlockEffectRemovalCnt;) 574 SkDEBUGCODE(int fBlockEffectRemovalCnt;)
565 575
566 void internalSetVertexAttribs(const GrVertexAttrib attribs[], int count, siz e_t stride); 576 void internalSetVertexAttribs(const GrVertexAttrib attribs[], int count, siz e_t stride);
567 577
568 typedef GrRODrawState INHERITED; 578 typedef GrRODrawState INHERITED;
569 }; 579 };
570 580
571 #endif 581 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrDrawState.cpp » ('j') | src/gpu/GrRODrawState.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698