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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 SkASSERT(effect); | 77 SkASSERT(effect); |
78 SkNEW_APPEND_TO_TARRAY(&fCoverageStages, GrFragmentStage, (effect)); | 78 SkNEW_APPEND_TO_TARRAY(&fCoverageStages, GrFragmentStage, (effect)); |
79 fCoverageProcInfoValid = false; | 79 fCoverageProcInfoValid = false; |
80 return effect; | 80 return effect; |
81 } | 81 } |
82 | 82 |
83 /** | 83 /** |
84 * Creates a GrSimpleTextureEffect that uses local coords as texture coordin
ates. | 84 * Creates a GrSimpleTextureEffect that uses local coords as texture coordin
ates. |
85 */ | 85 */ |
86 void addColorTextureProcessor(GrTexture* texture, const SkMatrix& matrix) { | 86 void addColorTextureProcessor(GrTexture* texture, const SkMatrix& matrix) { |
87 this->addColorProcessor(GrSimpleTextureEffect::Create(&fProcDataManager,
texture, | 87 this->addColorProcessor(GrSimpleTextureEffect::Create(fProcDataManager,
texture, |
88 matrix))->unref(); | 88 matrix))->unref(); |
89 } | 89 } |
90 | 90 |
91 void addCoverageTextureProcessor(GrTexture* texture, const SkMatrix& matrix)
{ | 91 void addCoverageTextureProcessor(GrTexture* texture, const SkMatrix& matrix)
{ |
92 this->addCoverageProcessor(GrSimpleTextureEffect::Create(&fProcDataManag
er, texture, | 92 this->addCoverageProcessor(GrSimpleTextureEffect::Create(fProcDataManage
r, texture, |
93 matrix))->unref
(); | 93 matrix))->unref
(); |
94 } | 94 } |
95 | 95 |
96 void addColorTextureProcessor(GrTexture* texture, | 96 void addColorTextureProcessor(GrTexture* texture, |
97 const SkMatrix& matrix, | 97 const SkMatrix& matrix, |
98 const GrTextureParams& params) { | 98 const GrTextureParams& params) { |
99 this->addColorProcessor(GrSimpleTextureEffect::Create(&fProcDataManager,
texture, matrix, | 99 this->addColorProcessor(GrSimpleTextureEffect::Create(fProcDataManager,
texture, matrix, |
100 params))->unref(); | 100 params))->unref(); |
101 } | 101 } |
102 | 102 |
103 void addCoverageTextureProcessor(GrTexture* texture, | 103 void addCoverageTextureProcessor(GrTexture* texture, |
104 const SkMatrix& matrix, | 104 const SkMatrix& matrix, |
105 const GrTextureParams& params) { | 105 const GrTextureParams& params) { |
106 this->addCoverageProcessor(GrSimpleTextureEffect::Create(&fProcDataManag
er, texture, matrix, | 106 this->addCoverageProcessor(GrSimpleTextureEffect::Create(fProcDataManage
r, texture, matrix, |
107 params))->unref
(); | 107 params))->unref
(); |
108 } | 108 } |
109 | 109 |
110 /** | 110 /** |
111 * When this object is destroyed it will remove any color/coverage FPs from
the pipeline builder | 111 * When this object is destroyed it will remove any color/coverage FPs from
the pipeline builder |
112 * that were added after its constructor. | 112 * that were added after its constructor. |
113 */ | 113 */ |
114 class AutoRestoreFragmentProcessors : public ::SkNoncopyable { | 114 class AutoRestoreFragmentProcessors : public ::SkNoncopyable { |
115 public: | 115 public: |
116 AutoRestoreFragmentProcessors() | 116 AutoRestoreFragmentProcessors() |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 } | 389 } |
390 | 390 |
391 const GrProcOptInfo& coverageProcInfo(const GrBatch* batch) const { | 391 const GrProcOptInfo& coverageProcInfo(const GrBatch* batch) const { |
392 this->calcCoverageInvariantOutput(batch); | 392 this->calcCoverageInvariantOutput(batch); |
393 return fCoverageProcInfo; | 393 return fCoverageProcInfo; |
394 } | 394 } |
395 | 395 |
396 void setClip(const GrClip& clip) { fClip = clip; } | 396 void setClip(const GrClip& clip) { fClip = clip; } |
397 const GrClip& clip() const { return fClip; } | 397 const GrClip& clip() const { return fClip; } |
398 | 398 |
399 GrProcessorDataManager* getProcessorDataManager() { return &fProcDataManager
; } | 399 GrProcessorDataManager* getProcessorDataManager() { return fProcDataManager.
get(); } |
| 400 const GrProcessorDataManager* processorDataManager() const { return fProcDat
aManager.get(); } |
400 | 401 |
401 private: | 402 private: |
402 // Calculating invariant color / coverage information is expensive, so we pa
rtially cache the | 403 // Calculating invariant color / coverage information is expensive, so we pa
rtially cache the |
403 // results. | 404 // results. |
404 // | 405 // |
405 // canUseFracCoveragePrimProc() - Called in regular skia draw, caches result
s but only for a | 406 // canUseFracCoveragePrimProc() - Called in regular skia draw, caches result
s but only for a |
406 // specific color and coverage. May be calle
d multiple times | 407 // specific color and coverage. May be calle
d multiple times |
407 // willColorBlendWithDst() - only called by Nvpr, does not cache results | 408 // willColorBlendWithDst() - only called by Nvpr, does not cache results |
408 // GrOptDrawState constructor - never caches results | 409 // GrOptDrawState constructor - never caches results |
409 | 410 |
(...skipping 21 matching lines...) Expand all Loading... |
431 * processors and results are stored in fCoverageProcInfo. | 432 * processors and results are stored in fCoverageProcInfo. |
432 */ | 433 */ |
433 void calcCoverageInvariantOutput(GrColor) const; | 434 void calcCoverageInvariantOutput(GrColor) const; |
434 | 435 |
435 // Some of the auto restore objects assume that no effects are removed durin
g their lifetime. | 436 // Some of the auto restore objects assume that no effects are removed durin
g their lifetime. |
436 // This is used to assert that this condition holds. | 437 // This is used to assert that this condition holds. |
437 SkDEBUGCODE(int fBlockEffectRemovalCnt;) | 438 SkDEBUGCODE(int fBlockEffectRemovalCnt;) |
438 | 439 |
439 typedef SkSTArray<4, GrFragmentStage> FragmentStageArray; | 440 typedef SkSTArray<4, GrFragmentStage> FragmentStageArray; |
440 | 441 |
441 GrProcessorDataManager fProcDataManager; | 442 SkAutoTUnref<GrProcessorDataManager> fProcDataManager; |
442 SkAutoTUnref<GrRenderTarget> fRenderTarget; | 443 SkAutoTUnref<GrRenderTarget> fRenderTarget; |
443 uint32_t fFlags; | 444 uint32_t fFlags; |
444 GrStencilSettings fStencilSettings; | 445 GrStencilSettings fStencilSettings; |
445 DrawFace fDrawFace; | 446 DrawFace fDrawFace; |
446 mutable SkAutoTUnref<const GrXPFactory> fXPFactory; | 447 mutable SkAutoTUnref<const GrXPFactory> fXPFactory; |
447 FragmentStageArray fColorStages; | 448 FragmentStageArray fColorStages; |
448 FragmentStageArray fCoverageStages; | 449 FragmentStageArray fCoverageStages; |
449 GrClip fClip; | 450 GrClip fClip; |
450 | 451 |
451 mutable GrProcOptInfo fColorProcInfo; | 452 mutable GrProcOptInfo fColorProcInfo; |
452 mutable GrProcOptInfo fCoverageProcInfo; | 453 mutable GrProcOptInfo fCoverageProcInfo; |
453 mutable bool fColorProcInfoValid; | 454 mutable bool fColorProcInfoValid; |
454 mutable bool fCoverageProcInfoValid; | 455 mutable bool fCoverageProcInfoValid; |
455 mutable GrColor fColorCache; | 456 mutable GrColor fColorCache; |
456 mutable GrColor fCoverageCache; | 457 mutable GrColor fCoverageCache; |
457 | 458 |
458 friend class GrPipeline; | 459 friend class GrPipeline; |
459 }; | 460 }; |
460 | 461 |
461 #endif | 462 #endif |
OLD | NEW |