diff options
author | 2016-11-21 09:44:59 -0500 | |
---|---|---|
committer | 2016-11-21 15:18:37 +0000 | |
commit | 99bba9ea829323a7941d4f3a9c98da7a76432d1b (patch) | |
tree | 6d263012989c28e154fc8e95726974099228cf00 /src | |
parent | 7992da32f02f90e0ac9ab6914eb31676b502eb71 (diff) |
Add missing virtual functions for SkRectClipCheckBlitter
This CL is related to the issue that we tried to fix in
https://skia-review.googlesource.com/c/5078/
Specifically, SkARGB32_Blitter overrides blitAntiH2 and blitAntiV2 and
they're different from blitAntiRuns. Therefore, if
SkRectClipCheckBlitter does not override those two functions, we're
going to get different results in debug and release build.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5082
Change-Id: I7f9565d494f0a6c45ab5a06fbedb73ef233b9a1f
Reviewed-on: https://skia-review.googlesource.com/5082
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkBlitter.cpp | 10 | ||||
-rw-r--r-- | src/core/SkBlitter.h | 2 | ||||
-rw-r--r-- | src/core/SkScanPriv.h | 2 | ||||
-rw-r--r-- | src/core/SkScan_Path.cpp | 8 |
4 files changed, 17 insertions, 5 deletions
diff --git a/src/core/SkBlitter.cpp b/src/core/SkBlitter.cpp index af3cc04932..731d0d3cb7 100644 --- a/src/core/SkBlitter.cpp +++ b/src/core/SkBlitter.cpp @@ -1070,4 +1070,14 @@ const SkPixmap* SkRectClipCheckBlitter::justAnOpaqueColor(uint32_t* value) { return fBlitter->justAnOpaqueColor(value); } +void SkRectClipCheckBlitter::blitAntiH2(int x, int y, U8CPU a0, U8CPU a1) { + SkASSERT(fClipRect.contains(SkIRect::MakeXYWH(x, y, 2, 1))); + fBlitter->blitAntiH2(x, y, a0, a1); +} + +void SkRectClipCheckBlitter::blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) { + SkASSERT(fClipRect.contains(SkIRect::MakeXYWH(x, y, 1, 2))); + fBlitter->blitAntiV2(x, y, a0, a1); +} + #endif diff --git a/src/core/SkBlitter.h b/src/core/SkBlitter.h index c9fed1ce22..f03a308243 100644 --- a/src/core/SkBlitter.h +++ b/src/core/SkBlitter.h @@ -258,6 +258,8 @@ public: SkAlpha leftAlpha, SkAlpha rightAlpha) override; void blitMask(const SkMask&, const SkIRect& clip) override; const SkPixmap* justAnOpaqueColor(uint32_t* value) override; + void blitAntiH2(int x, int y, U8CPU a0, U8CPU a1) override; + void blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) override; int requestRowsPreserved() const override { return fBlitter->requestRowsPreserved(); diff --git a/src/core/SkScanPriv.h b/src/core/SkScanPriv.h index af0a4cbd3f..4c237e004b 100644 --- a/src/core/SkScanPriv.h +++ b/src/core/SkScanPriv.h @@ -24,7 +24,7 @@ private: SkRectClipBlitter fRectBlitter; SkRgnClipBlitter fRgnBlitter; #ifdef SK_DEBUG - // SkRectClipCheckBlitter fRectClipCheckBlitter; + SkRectClipCheckBlitter fRectClipCheckBlitter; #endif SkBlitter* fBlitter; const SkIRect* fClipRect; diff --git a/src/core/SkScan_Path.cpp b/src/core/SkScan_Path.cpp index bf8f32080d..ec0fe06b66 100644 --- a/src/core/SkScan_Path.cpp +++ b/src/core/SkScan_Path.cpp @@ -559,8 +559,8 @@ SkScanClipper::SkScanClipper(SkBlitter* blitter, const SkRegion* clip, if (clip->isRect()) { if (fClipRect->contains(ir)) { #ifdef SK_DEBUG - // fRectClipCheckBlitter.init(blitter, *fClipRect); - // blitter = &fRectClipCheckBlitter; + fRectClipCheckBlitter.init(blitter, *fClipRect); + blitter = &fRectClipCheckBlitter; #endif fClipRect = nullptr; } else { @@ -570,8 +570,8 @@ SkScanClipper::SkScanClipper(SkBlitter* blitter, const SkRegion* clip, blitter = &fRectBlitter; } else { #ifdef SK_DEBUG - // fRectClipCheckBlitter.init(blitter, *fClipRect); - // blitter = &fRectClipCheckBlitter; + fRectClipCheckBlitter.init(blitter, *fClipRect); + blitter = &fRectClipCheckBlitter; #endif } } |