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

Side by Side Diff: src/gpu/GrPipelineBuilder.cpp

Issue 956363003: Cleanup in GrPipelineBuilder (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix Created 5 years, 9 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/GrPipelineBuilder.h ('k') | src/gpu/GrSWMaskHelper.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 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 #include "GrPipelineBuilder.h" 8 #include "GrPipelineBuilder.h"
9 9
10 #include "GrBlend.h" 10 #include "GrBlend.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 } 83 }
84 84
85 //////////////////////////////////////////////////////////////////////////////s 85 //////////////////////////////////////////////////////////////////////////////s
86 86
87 bool GrPipelineBuilder::willXPNeedDstCopy(const GrDrawTargetCaps& caps, 87 bool GrPipelineBuilder::willXPNeedDstCopy(const GrDrawTargetCaps& caps,
88 const GrProcOptInfo& colorPOI, 88 const GrProcOptInfo& colorPOI,
89 const GrProcOptInfo& coveragePOI) cons t { 89 const GrProcOptInfo& coveragePOI) cons t {
90 return this->getXPFactory()->willNeedDstCopy(caps, colorPOI, coveragePOI); 90 return this->getXPFactory()->willNeedDstCopy(caps, colorPOI, coveragePOI);
91 } 91 }
92 92
93 void GrPipelineBuilder::AutoRestoreEffects::set(GrPipelineBuilder* pipelineBuild er) { 93 void GrPipelineBuilder::AutoRestoreFragmentProcessors::set(GrPipelineBuilder* pi pelineBuilder) {
94 if (fPipelineBuilder) { 94 if (fPipelineBuilder) {
95 int m = fPipelineBuilder->numColorStages() - fColorEffectCnt; 95 int m = fPipelineBuilder->numColorFragmentStages() - fColorEffectCnt;
96 SkASSERT(m >= 0); 96 SkASSERT(m >= 0);
97 fPipelineBuilder->fColorStages.pop_back_n(m); 97 fPipelineBuilder->fColorStages.pop_back_n(m);
98 98
99 int n = fPipelineBuilder->numCoverageStages() - fCoverageEffectCnt; 99 int n = fPipelineBuilder->numCoverageFragmentStages() - fCoverageEffectC nt;
100 SkASSERT(n >= 0); 100 SkASSERT(n >= 0);
101 fPipelineBuilder->fCoverageStages.pop_back_n(n); 101 fPipelineBuilder->fCoverageStages.pop_back_n(n);
102 if (m + n > 0) { 102 if (m + n > 0) {
103 fPipelineBuilder->fColorProcInfoValid = false; 103 fPipelineBuilder->fColorProcInfoValid = false;
104 fPipelineBuilder->fCoverageProcInfoValid = false; 104 fPipelineBuilder->fCoverageProcInfoValid = false;
105 } 105 }
106 SkDEBUGCODE(--fPipelineBuilder->fBlockEffectRemovalCnt;) 106 SkDEBUGCODE(--fPipelineBuilder->fBlockEffectRemovalCnt;)
107 } 107 }
108 fPipelineBuilder = pipelineBuilder; 108 fPipelineBuilder = pipelineBuilder;
109 if (NULL != pipelineBuilder) { 109 if (NULL != pipelineBuilder) {
110 fColorEffectCnt = pipelineBuilder->numColorStages(); 110 fColorEffectCnt = pipelineBuilder->numColorFragmentStages();
111 fCoverageEffectCnt = pipelineBuilder->numCoverageStages(); 111 fCoverageEffectCnt = pipelineBuilder->numCoverageFragmentStages();
112 SkDEBUGCODE(++pipelineBuilder->fBlockEffectRemovalCnt;) 112 SkDEBUGCODE(++pipelineBuilder->fBlockEffectRemovalCnt;)
113 } 113 }
114 } 114 }
115 115
116 //////////////////////////////////////////////////////////////////////////////// 116 ////////////////////////////////////////////////////////////////////////////////
117 117
118 // Some blend modes allow folding a fractional coverage value into the color's a lpha channel, while 118 // Some blend modes allow folding a fractional coverage value into the color's a lpha channel, while
119 // others will blend incorrectly. 119 // others will blend incorrectly.
120 bool GrPipelineBuilder::canTweakAlphaForCoverage() const { 120 bool GrPipelineBuilder::canTweakAlphaForCoverage() const {
121 return this->getXPFactory()->canTweakAlphaForCoverage(); 121 return this->getXPFactory()->canTweakAlphaForCoverage();
(...skipping 10 matching lines...) Expand all
132 bool GrPipelineBuilder::willBlendWithDst(const GrPrimitiveProcessor* pp) const { 132 bool GrPipelineBuilder::willBlendWithDst(const GrPrimitiveProcessor* pp) const {
133 this->calcColorInvariantOutput(pp); 133 this->calcColorInvariantOutput(pp);
134 this->calcCoverageInvariantOutput(pp); 134 this->calcCoverageInvariantOutput(pp);
135 135
136 GrXPFactory::InvariantOutput output; 136 GrXPFactory::InvariantOutput output;
137 fXPFactory->getInvariantOutput(fColorProcInfo, fCoverageProcInfo, &output); 137 fXPFactory->getInvariantOutput(fColorProcInfo, fCoverageProcInfo, &output);
138 return output.fWillBlendWithDst; 138 return output.fWillBlendWithDst;
139 } 139 }
140 140
141 void GrPipelineBuilder::calcColorInvariantOutput(const GrPrimitiveProcessor* pp) const { 141 void GrPipelineBuilder::calcColorInvariantOutput(const GrPrimitiveProcessor* pp) const {
142 fColorProcInfo.calcColorWithPrimProc(pp, fColorStages.begin(), this->numColo rStages()); 142 fColorProcInfo.calcColorWithPrimProc(pp, fColorStages.begin(), this->numColo rFragmentStages());
143 fColorProcInfoValid = false; 143 fColorProcInfoValid = false;
144 144
145 } 145 }
146 146
147 void GrPipelineBuilder::calcCoverageInvariantOutput(const GrPrimitiveProcessor* pp) const { 147 void GrPipelineBuilder::calcCoverageInvariantOutput(const GrPrimitiveProcessor* pp) const {
148 fCoverageProcInfo.calcCoverageWithPrimProc(pp, fCoverageStages.begin(), 148 fCoverageProcInfo.calcCoverageWithPrimProc(pp, fCoverageStages.begin(),
149 this->numCoverageStages()); 149 this->numCoverageFragmentStages() );
150 fCoverageProcInfoValid = false; 150 fCoverageProcInfoValid = false;
151 } 151 }
152 152
153 void GrPipelineBuilder::calcColorInvariantOutput(const GrBatch* batch) const { 153 void GrPipelineBuilder::calcColorInvariantOutput(const GrBatch* batch) const {
154 fColorProcInfo.calcColorWithBatch(batch, fColorStages.begin(), this->numColo rStages()); 154 fColorProcInfo.calcColorWithBatch(batch, fColorStages.begin(), this->numColo rFragmentStages());
155 fColorProcInfoValid = false; 155 fColorProcInfoValid = false;
156 } 156 }
157 157
158 void GrPipelineBuilder::calcCoverageInvariantOutput(const GrBatch* batch) const { 158 void GrPipelineBuilder::calcCoverageInvariantOutput(const GrBatch* batch) const {
159 fCoverageProcInfo.calcCoverageWithBatch(batch, fCoverageStages.begin(), 159 fCoverageProcInfo.calcCoverageWithBatch(batch, fCoverageStages.begin(),
160 this->numCoverageStages()); 160 this->numCoverageFragmentStages());
161 fCoverageProcInfoValid = false; 161 fCoverageProcInfoValid = false;
162 } 162 }
163 163
164 164
165 void GrPipelineBuilder::calcColorInvariantOutput(GrColor color) const { 165 void GrPipelineBuilder::calcColorInvariantOutput(GrColor color) const {
166 if (!fColorProcInfoValid || color != fColorCache) { 166 if (!fColorProcInfoValid || color != fColorCache) {
167 GrColorComponentFlags flags = kRGBA_GrColorComponentFlags; 167 GrColorComponentFlags flags = kRGBA_GrColorComponentFlags;
168 fColorProcInfo.calcWithInitialValues(fColorStages.begin(), this->numColo rStages(), color, 168 fColorProcInfo.calcWithInitialValues(fColorStages.begin(),this->numColor FragmentStages(),
169 flags, false); 169 color, flags, false);
170 fColorProcInfoValid = true; 170 fColorProcInfoValid = true;
171 fColorCache = color; 171 fColorCache = color;
172 } 172 }
173 } 173 }
174 174
175 void GrPipelineBuilder::calcCoverageInvariantOutput(GrColor coverage) const { 175 void GrPipelineBuilder::calcCoverageInvariantOutput(GrColor coverage) const {
176 if (!fCoverageProcInfoValid || coverage != fCoverageCache) { 176 if (!fCoverageProcInfoValid || coverage != fCoverageCache) {
177 GrColorComponentFlags flags = kRGBA_GrColorComponentFlags; 177 GrColorComponentFlags flags = kRGBA_GrColorComponentFlags;
178 fCoverageProcInfo.calcWithInitialValues(fCoverageStages.begin(), 178 fCoverageProcInfo.calcWithInitialValues(fCoverageStages.begin(),
179 this->numCoverageStages(), cover age, flags, 179 this->numCoverageFragmentStages( ), coverage, flags,
180 true); 180 true);
181 fCoverageProcInfoValid = true; 181 fCoverageProcInfoValid = true;
182 fCoverageCache = coverage; 182 fCoverageCache = coverage;
183 } 183 }
184 } 184 }
OLDNEW
« no previous file with comments | « src/gpu/GrPipelineBuilder.h ('k') | src/gpu/GrSWMaskHelper.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698