diff options
author | Brian Salomon <bsalomon@google.com> | 2017-02-24 10:37:15 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-02-24 16:16:34 +0000 |
commit | 02baee973f973e56149147fa7c81a2c9c35d77d8 (patch) | |
tree | c8c389043979999104b1f125166767aa833f4f38 /src | |
parent | 9ad1f92e2fceea33215c0f13cee42a679fb88d44 (diff) |
Remove the skip-draw xp optimization
This seems like extra complexity for a impractical case. Also, if this is important a lot more work could be saved by catching this upstack (e.g. SkCanvas or SkPaintToGrPaint).
Change-Id: Ib47be9f3cdc8ce9e5b12d9e9eac5266f04c337a9
Reviewed-on: https://skia-review.googlesource.com/8949
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/GrPipeline.cpp | 8 | ||||
-rw-r--r-- | src/gpu/GrXferProcessor.h | 10 | ||||
-rw-r--r-- | src/gpu/effects/GrPorterDuffXferProcessor.cpp | 3 |
3 files changed, 3 insertions, 18 deletions
diff --git a/src/gpu/GrPipeline.cpp b/src/gpu/GrPipeline.cpp index 6de106c8dd..51b6666148 100644 --- a/src/gpu/GrPipeline.cpp +++ b/src/gpu/GrPipeline.cpp @@ -78,14 +78,6 @@ GrPipeline* GrPipeline::CreateAt(void* memory, const CreateArgs& args, *args.fAnalysis, args.fUserStencil->doesWrite(args.fAppliedClip->hasStencilClip()), &overrideColor, *args.fCaps); - // When path rendering the stencil settings are not always set on the GrPipelineBuilder - // so we must check the draw type. In cases where we will skip drawing we simply return a - // null GrPipeline. - if (GrXferProcessor::kSkipDraw_OptFlag & optFlags) { - pipeline->~GrPipeline(); - return nullptr; - } - // No need to have an override color if it isn't even going to be used. if (SkToBool(GrXferProcessor::kIgnoreColor_OptFlag & optFlags)) { overrideColor = GrColor_ILLEGAL; diff --git a/src/gpu/GrXferProcessor.h b/src/gpu/GrXferProcessor.h index 5ce06571a2..e837ed00dd 100644 --- a/src/gpu/GrXferProcessor.h +++ b/src/gpu/GrXferProcessor.h @@ -107,21 +107,17 @@ public: */ enum OptFlags { /** - * The draw can be skipped completely. - */ - kSkipDraw_OptFlag = 0x1, - /** * GrXferProcessor will ignore color, thus no need to provide */ - kIgnoreColor_OptFlag = 0x2, + kIgnoreColor_OptFlag = 0x1, /** * Clear color stages and override input color to that returned by getOptimizations */ - kOverrideColor_OptFlag = 0x4, + kOverrideColor_OptFlag = 0x2, /** * Can tweak alpha for coverage. Currently this flag should only be used by a GrDrawOp. */ - kCanTweakAlphaForCoverage_OptFlag = 0x8, + kCanTweakAlphaForCoverage_OptFlag = 0x4, }; static const OptFlags kNone_OptFlags = (OptFlags)0; diff --git a/src/gpu/effects/GrPorterDuffXferProcessor.cpp b/src/gpu/effects/GrPorterDuffXferProcessor.cpp index 4803c2d6ac..4813c9ddf0 100644 --- a/src/gpu/effects/GrPorterDuffXferProcessor.cpp +++ b/src/gpu/effects/GrPorterDuffXferProcessor.cpp @@ -456,9 +456,6 @@ GrXferProcessor::OptFlags PorterDuffXferProcessor::onGetOptimizations( const GrCaps& caps) const { GrXferProcessor::OptFlags optFlags = GrXferProcessor::kNone_OptFlags; if (!fBlendFormula.modifiesDst()) { - if (!doesStencilWrite) { - optFlags |= GrXferProcessor::kSkipDraw_OptFlag; - } optFlags |= (GrXferProcessor::kIgnoreColor_OptFlag | GrXferProcessor::kCanTweakAlphaForCoverage_OptFlag); } else { |