diff options
author | robertphillips <robertphillips@google.com> | 2015-01-26 07:05:04 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-26 07:05:04 -0800 |
commit | 65327efb5bf42b5b9acaa8198e6c5252b07b0ada (patch) | |
tree | 097262476767c50a095d200fd02b4b50f02d1c8b /src/core | |
parent | 0a482f44141ee101bdd59b0a607c193c7c0446b7 (diff) |
Revert of Alter gpu veto (patchset #1 id:1 of https://codereview.chromium.org/875913002/)
Reason for revert:
Failing tests
Original issue's description:
> Alter gpu veto
>
> This CL unifies the treatment of the dashed and concave paths.
>
> Before:
> TP 28 FP 15 TN 8 FN 3 IND 3
>
> After:
> TP 28 FP 18 TN 7 FN 2 IND 2
>
> One of the TrueNegatives that became a FalsePositive was the motivation use case (the Chromium busy spinner).
>
> Committed: https://skia.googlesource.com/skia/+/87a6a8e18c7d5bbc94f478b44c53dc0e0549f927
TBR=egdaniel@google.com,bsalomon@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/879483003
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkPicture.cpp | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/src/core/SkPicture.cpp b/src/core/SkPicture.cpp index c7e36e7ecd..871a62e8f3 100644 --- a/src/core/SkPicture.cpp +++ b/src/core/SkPicture.cpp @@ -239,22 +239,31 @@ SkPicture::Analysis::Analysis(const SkRecord& record) { bool SkPicture::Analysis::suitableForGpuRasterization(const char** reason, int sampleCount) const { // TODO: the heuristic used here needs to be refined - static const int kNumSlowPathsTol = 6; + static const int kNumPaintWithPathEffectsUsesTol = 1; + static const int kNumAAConcavePathsTol = 5; - int numSlowPathDashedPaths = fNumPaintWithPathEffectUses; - if (0 == sampleCount) { - // The fast dashing path only works when MSAA is disabled - numSlowPathDashedPaths -= fNumFastPathDashEffects; - } - - int numSlowPaths = fNumAAConcavePaths - - fNumAAHairlineConcavePaths - - fNumAADFEligibleConcavePaths; + int numNonDashedPathEffects = fNumPaintWithPathEffectUses - + fNumFastPathDashEffects; + bool suitableForDash = (0 == fNumPaintWithPathEffectUses) || + (numNonDashedPathEffects < kNumPaintWithPathEffectsUsesTol + && 0 == sampleCount); - bool ret = numSlowPathDashedPaths + numSlowPaths < kNumSlowPathsTol; + bool ret = suitableForDash && + (fNumAAConcavePaths - fNumAAHairlineConcavePaths - fNumAADFEligibleConcavePaths) + < kNumAAConcavePathsTol; if (!ret && reason) { - *reason = "Too many slow paths (either concave or dashed)."; + if (!suitableForDash) { + if (0 != sampleCount) { + *reason = "Can't use multisample on dash effect."; + } else { + *reason = "Too many non dashed path effects."; + } + } else if ((fNumAAConcavePaths - fNumAAHairlineConcavePaths - fNumAADFEligibleConcavePaths) + >= kNumAAConcavePathsTol) + *reason = "Too many anti-aliased concave paths."; + else + *reason = "Unknown reason for GPU unsuitability."; } return ret; } |