127 bool coverageUsesLocalCoords =
false;
129 if (!fCoverageFragmentProcessor->compatibleWithCoverageAsAlpha()) {
130 analysis.fCompatibleWithCoverageAsAlpha =
false;
132 coverageUsesLocalCoords |= fCoverageFragmentProcessor->usesSampleCoords();
134 if (
clip &&
clip->hasCoverageFragmentProcessor()) {
135 hasCoverageFP =
true;
141 analysis.fInputColorType =
static_cast<Analysis::PackedInputColorType
>(
142 colorFPsToEliminate ? Analysis::kOverridden_InputColorType
143 : Analysis::kOriginal_InputColorType);
155 this->xpFactory(), colorAnalysis.
outputColor(), outputCoverage, caps, clampType);
158 analysis.fCompatibleWithCoverageAsAlpha &=
160 analysis.fRequiresNonOverlappingDraws =
162 analysis.fRequiresDstTexture;
163 analysis.fUsesNonCoherentHWBlending =
165 analysis.fUnaffectedByDstValue =
169 analysis.fInputColorType =
170 static_cast<Analysis::PackedInputColorType
>(Analysis::kIgnored_InputColorType);
171 analysis.fUsesLocalCoords = coverageUsesLocalCoords;
173 analysis.fCompatibleWithCoverageAsAlpha &=
175 analysis.fUsesLocalCoords = coverageUsesLocalCoords || colorAnalysis.
usesLocalCoords();
177 if (colorFPsToEliminate) {
179 fColorFragmentProcessor =
nullptr;
184 outputCoverage, caps, clampType);
185 fXP.fProcessor = xp.release();
187 fFlags |= kFinalized_Flag;
188 analysis.fIsInitialized =
true;
190 bool hasXferBarrier =
193 bool needsNonOverlappingDraws = analysis.fRequiresDstTexture || hasXferBarrier;
194 SkASSERT(analysis.fRequiresNonOverlappingDraws == needsNonOverlappingDraws);
Analysis finalize(const GrProcessorAnalysisColor &, const GrProcessorAnalysisCoverage, const GrAppliedClip *, const GrUserStencilSettings *, const GrCaps &, GrClampType, SkPMColor4f *inputColorOverride)