OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 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 GrPipelineBuilder_DEFINED | 8 #ifndef GrPipelineBuilder_DEFINED |
9 #define GrPipelineBuilder_DEFINED | 9 #define GrPipelineBuilder_DEFINED |
10 | 10 |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 */ | 353 */ |
354 void setDrawFace(DrawFace face) { | 354 void setDrawFace(DrawFace face) { |
355 SkASSERT(kInvalid_DrawFace != face); | 355 SkASSERT(kInvalid_DrawFace != face); |
356 fDrawFace = face; | 356 fDrawFace = face; |
357 } | 357 } |
358 | 358 |
359 /// @} | 359 /// @} |
360 | 360 |
361 /////////////////////////////////////////////////////////////////////////// | 361 /////////////////////////////////////////////////////////////////////////// |
362 | 362 |
363 const GrProcOptInfo& colorProcInfo(const GrDrawBatch* batch) const { | 363 bool usePLSDstRead(const GrDrawBatch* batch) const; |
364 this->calcColorInvariantOutput(batch); | |
365 return fColorProcInfo; | |
366 } | |
367 | |
368 const GrProcOptInfo& coverageProcInfo(const GrDrawBatch* batch) const { | |
369 this->calcCoverageInvariantOutput(batch); | |
370 return fCoverageProcInfo; | |
371 } | |
372 | 364 |
373 void setClip(const GrClip& clip) { fClip = clip; } | 365 void setClip(const GrClip& clip) { fClip = clip; } |
374 const GrClip& clip() const { return fClip; } | 366 const GrClip& clip() const { return fClip; } |
375 | 367 |
376 private: | 368 private: |
377 // Calculating invariant color / coverage information is expensive, so we pa
rtially cache the | |
378 // results. | |
379 // | |
380 // canUseFracCoveragePrimProc() - Called in regular skia draw, caches result
s but only for a | |
381 // specific color and coverage. May be calle
d multiple times | |
382 // GrOptDrawState constructor - never caches results | |
383 | |
384 /** | |
385 * GrBatch provides the initial seed for these loops based off of its initia
l geometry data | |
386 */ | |
387 void calcColorInvariantOutput(const GrDrawBatch*) const; | |
388 void calcCoverageInvariantOutput(const GrDrawBatch*) const; | |
389 | |
390 // Some of the auto restore objects assume that no effects are removed durin
g their lifetime. | 369 // Some of the auto restore objects assume that no effects are removed durin
g their lifetime. |
391 // This is used to assert that this condition holds. | 370 // This is used to assert that this condition holds. |
392 SkDEBUGCODE(mutable int fBlockEffectRemovalCnt;) | 371 SkDEBUGCODE(mutable int fBlockEffectRemovalCnt;) |
393 | 372 |
394 typedef SkSTArray<4, const GrFragmentProcessor*, true> FragmentProcessorArra
y; | 373 typedef SkSTArray<4, const GrFragmentProcessor*, true> FragmentProcessorArra
y; |
395 | 374 |
396 SkAutoTUnref<GrRenderTarget> fRenderTarget; | 375 SkAutoTUnref<GrRenderTarget> fRenderTarget; |
397 uint32_t fFlags; | 376 uint32_t fFlags; |
398 GrStencilSettings fStencilSettings; | 377 GrStencilSettings fStencilSettings; |
399 DrawFace fDrawFace; | 378 DrawFace fDrawFace; |
400 mutable SkAutoTUnref<const GrXPFactory> fXPFactory; | 379 mutable SkAutoTUnref<const GrXPFactory> fXPFactory; |
401 FragmentProcessorArray fColorFragmentProcessors; | 380 FragmentProcessorArray fColorFragmentProcessors; |
402 FragmentProcessorArray fCoverageFragmentProcessors; | 381 FragmentProcessorArray fCoverageFragmentProcessors; |
403 GrClip fClip; | 382 GrClip fClip; |
404 | 383 |
405 mutable GrProcOptInfo fColorProcInfo; | |
406 mutable GrProcOptInfo fCoverageProcInfo; | |
407 | |
408 friend class GrPipeline; | 384 friend class GrPipeline; |
| 385 friend class GrDrawTarget; |
409 }; | 386 }; |
410 | 387 |
411 #endif | 388 #endif |
OLD | NEW |