diff options
author | Brian Salomon <bsalomon@google.com> | 2017-03-28 16:32:05 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-03-29 13:17:50 +0000 |
commit | 318538484f99253b6a2acf97d4d1b420e628b289 (patch) | |
tree | a698f31af79a873f16bad8847c50623bb44a19be /src/gpu/GrXferProcessor.cpp | |
parent | 02bb6df0819d932a7a7ef8c6fb6914e3c5a0f4a2 (diff) |
Remove GrXferProcessor::getOptimizations.
This replaces GrXferProcessor::getOptimizations with a new function on GrXPFactory. The results are made available via FragmentProcessorAnalysis.
Bug: skia:
Change-Id: I535985458c9d13ad858cac94e957e2fdbe332036
Reviewed-on: https://skia-review.googlesource.com/10218
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/GrXferProcessor.cpp')
-rw-r--r-- | src/gpu/GrXferProcessor.cpp | 41 |
1 files changed, 14 insertions, 27 deletions
diff --git a/src/gpu/GrXferProcessor.cpp b/src/gpu/GrXferProcessor.cpp index bd63a0a40b..45bcc2d595 100644 --- a/src/gpu/GrXferProcessor.cpp +++ b/src/gpu/GrXferProcessor.cpp @@ -29,11 +29,6 @@ GrXferProcessor::GrXferProcessor(const DstTexture* dstTexture, } } -GrXferProcessor::OptFlags GrXferProcessor::getOptimizations( - const FragmentProcessorAnalysis& analysis) const { - return this->onGetOptimizations(analysis); -} - bool GrXferProcessor::hasSecondaryOutput() const { if (!this->willReadDstColor()) { return this->onHasSecondaryOutput(); @@ -175,31 +170,23 @@ SkString GrXferProcessor::BlendInfo::dump() const { /////////////////////////////////////////////////////////////////////////////// -bool GrXPFactory::WillNeedDstTexture(const GrXPFactory* factory, const GrCaps& caps, - const GrProcessorSet::FragmentProcessorAnalysis& analysis) { - bool result; +GrXPFactory::AnalysisProperties GrXPFactory::GetAnalysisProperties( + const GrXPFactory* factory, + const GrPipelineAnalysisColor& color, + const GrPipelineAnalysisCoverage& coverage, + const GrCaps& caps) { + AnalysisProperties result; if (factory) { - result = !caps.shaderCaps()->dstReadInShaderSupport() && - factory->willReadDstInShader(caps, analysis); + result = factory->analysisProperties(color, coverage, caps); } else { - result = GrPorterDuffXPFactory::WillSrcOverNeedDstTexture(caps, analysis); + result = GrPorterDuffXPFactory::SrcOverAnalysisProperties(color, coverage, caps); } - return result; -} - -bool GrXPFactory::CompatibleWithCoverageAsAlpha(const GrXPFactory* factory, bool colorIsOpaque) { - if (factory) { - return factory->compatibleWithCoverageAsAlpha(colorIsOpaque); + SkASSERT(!(result & AnalysisProperties::kRequiresDstTexture)); + if ((result & AnalysisProperties::kReadsDstInShader) && + !caps.shaderCaps()->dstReadInShaderSupport()) { + result |= AnalysisProperties::kRequiresDstTexture; } - return GrPorterDuffXPFactory::SrcOverIsCompatibleWithCoverageAsAlpha(); -} - -bool GrXPFactory::CanCombineOverlappedStencilAndCover(const GrXPFactory* factory, - bool colorIsOpaque) { - if (factory) { - return factory->canCombineOverlappedStencilAndCover(colorIsOpaque); - } - return GrPorterDuffXPFactory::SrcOverCanCombineOverlappedStencilAndCover(colorIsOpaque); + return result; } GrXferProcessor* GrXPFactory::createXferProcessor(const FragmentProcessorAnalysis& analysis, @@ -207,7 +194,7 @@ GrXferProcessor* GrXPFactory::createXferProcessor(const FragmentProcessorAnalysi const DstTexture* dstTexture, const GrCaps& caps) const { #ifdef SK_DEBUG - if (this->willReadDstInShader(caps, analysis)) { + if (analysis.requiresDstTexture()) { if (!caps.shaderCaps()->dstReadInShaderSupport()) { SkASSERT(dstTexture && dstTexture->texture()); } else { |