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

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: last warning 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 | « src/gpu/GrContext.cpp ('k') | 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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 * initial value (after construction or reset()) is 0xff. The constant 158 * initial value (after construction or reset()) is 0xff. The constant
159 * coverage is ignored when per-vertex coverage is provided. 159 * coverage is ignored when per-vertex coverage is provided.
160 */ 160 */
161 void setCoverage(uint8_t coverage) { 161 void setCoverage(uint8_t coverage) {
162 fCoverage = coverage; 162 fCoverage = coverage;
163 this->invalidateBlendOptFlags(); 163 this->invalidateBlendOptFlags();
164 } 164 }
165 165
166 /// @} 166 /// @}
167 167
168 /**
169 * The geometry processor is the sole element of the skia pipeline which can use the vertex,
170 * geometry, and tesselation shaders. The GP may also compute a coverage in its fragment shader
171 * but is never put in the color processing pipeline.
172 */
173
174 const GrEffect* setGeometryProcessor(const GrEffect* effect, int attr0 = -1, int attr1 = -1) {
175 SkASSERT(NULL != effect);
176 SkASSERT(!this->hasGeometryProcessor());
177 fGeometryProcessor.reset(new GrEffectStage(effect, attr0, attr1));
178 this->invalidateBlendOptFlags();
179 return effect;
180 }
181
168 /////////////////////////////////////////////////////////////////////////// 182 ///////////////////////////////////////////////////////////////////////////
169 /// @name Effect Stages 183 /// @name Effect Stages
170 /// Each stage hosts a GrEffect. The effect produces an output color or cove rage in the fragment 184 /// Each stage hosts a GrEffect. The effect produces an output color or cove rage in the fragment
171 /// shader. Its inputs are the output from the previous stage as well as som e variables 185 /// shader. Its inputs are the output from the previous stage as well as som e variables
172 /// available to it in the fragment and vertex shader (e.g. the vertex posit ion, the dst color, 186 /// available to it in the fragment and vertex shader (e.g. the vertex posit ion, the dst color,
173 /// the fragment position, local coordinates). 187 /// the fragment position, local coordinates).
174 /// 188 ///
175 /// The stages are divided into two sets, color-computing and coverage-compu ting. The final 189 /// The stages are divided into two sets, color-computing and coverage-compu ting. The final
176 /// color stage produces the final pixel color. The coverage-computing stage s function exactly 190 /// color stage produces the final pixel color. The coverage-computing stage s function exactly
177 /// as the color-computing but the output of the final coverage stage is tre ated as a fractional 191 /// as the color-computing but the output of the final coverage stage is tre ated as a fractional
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 } 249 }
236 250
237 ~AutoRestoreEffects() { this->set(NULL); } 251 ~AutoRestoreEffects() { this->set(NULL); }
238 252
239 void set(GrDrawState* ds); 253 void set(GrDrawState* ds);
240 254
241 bool isSet() const { return NULL != fDrawState; } 255 bool isSet() const { return NULL != fDrawState; }
242 256
243 private: 257 private:
244 GrDrawState* fDrawState; 258 GrDrawState* fDrawState;
259 SkAutoTDelete<GrEffectStage> fGeometryProcessor;
245 int fColorEffectCnt; 260 int fColorEffectCnt;
246 int fCoverageEffectCnt; 261 int fCoverageEffectCnt;
247 }; 262 };
248 263
249 /// @} 264 /// @}
250 265
251 /////////////////////////////////////////////////////////////////////////// 266 ///////////////////////////////////////////////////////////////////////////
252 /// @name Blending 267 /// @name Blending
253 //// 268 ////
254 269
(...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 372 /** Sets the draw state's matrix to identity. This can fail because the current view matrix
358 is not invertible. */ 373 is not invertible. */
359 bool setIdentity(GrDrawState* drawState); 374 bool setIdentity(GrDrawState* drawState);
360 375
361 private: 376 private:
362 void doEffectCoordChanges(const SkMatrix& coordChangeMatrix); 377 void doEffectCoordChanges(const SkMatrix& coordChangeMatrix);
363 378
364 GrDrawState* fDrawState; 379 GrDrawState* fDrawState;
365 SkMatrix fViewMatrix; 380 SkMatrix fViewMatrix;
366 int fNumColorStages; 381 int fNumColorStages;
382 bool fHasGeometryProcesso r;
367 SkAutoSTArray<8, GrEffectStage::SavedCoordChange> fSavedCoordChanges; 383 SkAutoSTArray<8, GrEffectStage::SavedCoordChange> fSavedCoordChanges;
368 }; 384 };
369 385
370 /// @} 386 /// @}
371 387
372 /////////////////////////////////////////////////////////////////////////// 388 ///////////////////////////////////////////////////////////////////////////
373 /// @name Render Target 389 /// @name Render Target
374 //// 390 ////
375 391
376 /** 392 /**
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 // Some of the auto restore objects assume that no effects are removed durin g their lifetime. 544 // Some of the auto restore objects assume that no effects are removed durin g their lifetime.
529 // This is used to assert that this condition holds. 545 // This is used to assert that this condition holds.
530 SkDEBUGCODE(int fBlockEffectRemovalCnt;) 546 SkDEBUGCODE(int fBlockEffectRemovalCnt;)
531 547
532 void internalSetVertexAttribs(const GrVertexAttrib attribs[], int count, siz e_t stride); 548 void internalSetVertexAttribs(const GrVertexAttrib attribs[], int count, siz e_t stride);
533 549
534 typedef GrRODrawState INHERITED; 550 typedef GrRODrawState INHERITED;
535 }; 551 };
536 552
537 #endif 553 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrContext.cpp ('k') | src/gpu/GrDrawState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698