From cf1ac58e24c15be910e0ce6e19333e15a1a820d4 Mon Sep 17 00:00:00 2001 From: Yuqian Li Date: Mon, 16 Apr 2018 16:28:02 +0000 Subject: Reland "Cumulate deltas even if they're out of the clip" This reverts commit ffbe93296838c3a93a87261cae7f7229b56f1f8a. Reason for revert: guard flag is now in Original change's description: > Revert "Cumulate deltas even if they're out of the clip" > > This reverts commit 520e578b9987ea99b8ee62b485e941b3d5d96e0f. > > Reason for revert: guard flag isn't in yet > > Original change's description: > > Cumulate deltas even if they're out of the clip > > > > Otherwise, GM complexclip_aa_inverse will be drawn incorrectly > > in t8888 mode. > > > > Bug: skia: > > Change-Id: I2fe9dd94f3219e3883f713ca95ea3c3d8a49c7ba > > Reviewed-on: https://skia-review.googlesource.com/121261 > > Reviewed-by: Cary Clark > > Commit-Queue: Yuqian Li > > TBR=caryclark@google.com,liyuqian@google.com,reed@google.com > > # Not skipping CQ checks because original CL landed > 1 day ago. > > Bug: skia: > Change-Id: If7fa2a8bd1ff3e9b55c3900cbba82a3e2562f502 > Reviewed-on: https://skia-review.googlesource.com/121424 > Reviewed-by: Yuqian Li > Commit-Queue: Yuqian Li TBR=caryclark@google.com,liyuqian@google.com,reed@google.com Change-Id: I4ec1fec53782a106407d1398c43cab748fd5f259 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: skia: Reviewed-on: https://skia-review.googlesource.com/121600 Reviewed-by: Yuqian Li Commit-Queue: Yuqian Li --- src/core/SkBlitter.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp index 0a642ca4f6..18b9d83048 100644 --- a/src/core/SkBlitter.cpp +++ b/src/core/SkBlitter.cpp @@ -129,9 +129,15 @@ void SkBlitter::blitCoverageDeltas(SkCoverageDeltaList* deltas, const SkIRect& c int lastX = clip.fLeft; // init x to clip.fLeft SkFixed coverage = 0; // init coverage to 0 - // skip deltas with x less than clip.fLeft; they must be precision errors - for(; i < deltas->count(y) && deltas->getDelta(y, i).fX < clip.fLeft; ++i) - ; + // skip deltas with x less than clip.fLeft; they may be: + // 1. precision errors + // 2. deltas generated during init-once phase (threaded backend) that has a wider + // clip than the final tile clip. + for(; i < deltas->count(y) && deltas->getDelta(y, i).fX < clip.fLeft; ++i) { +#ifndef SK_SUPPORT_LEGACY_THREADED_DAA_BUGS + coverage += deltas->getDelta(y, i).fDelta; +#endif + } for(; i < deltas->count(y) && deltas->getDelta(y, i).fX < clip.fRight; ++i) { const SkCoverageDelta& delta = deltas->getDelta(y, i); SkASSERT(delta.fX >= lastX); // delta must be x sorted -- cgit v1.2.3