Remove code resetting pixelGeometry for filters
The code wasn't executed because we always reset pixelGeometry to
kUnknown_SkPixelGeometry unless kPreserveLCDText_SaveLayerFlag
(which has not been actually used yet) was specified.
The client should be responsible to use
kPreserveLCDText_SaveLayerFlag only when it's appropriate.
Bug: chromium:1076019
Change-Id: Ie2a559445c11cae63db20976cbedee269fca6b24
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/289129
Reviewed-by: Florin Malita <fmalita@chromium.org>
Commit-Queue: Florin Malita <fmalita@chromium.org>
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index c933a88..78a36e4 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1145,16 +1145,6 @@
return;
}
- SkPixelGeometry geo = fProps.pixelGeometry();
- if (!(saveLayerFlags & kPreserveLCDText_SaveLayerFlag)) {
- geo = kUnknown_SkPixelGeometry;
- } else if (paint) {
- // Filters may move pixels, or change colors or opaqueness, which may break LCD text.
- if (paint->getImageFilter() || paint->getColorFilter()) {
- geo = kUnknown_SkPixelGeometry;
- }
- }
-
SkBaseDevice* priorDevice = this->getTopDevice();
if (nullptr == priorDevice) { // Do we still need this check???
SkDebugf("Unable to find device for layer.");
@@ -1170,6 +1160,9 @@
{
SkASSERT(info.alphaType() != kOpaque_SkAlphaType);
+ SkPixelGeometry geo = saveLayerFlags & kPreserveLCDText_SaveLayerFlag
+ ? fProps.pixelGeometry()
+ : kUnknown_SkPixelGeometry;
const bool trackCoverage =
SkToBool(saveLayerFlags & kMaskAgainstCoverage_EXPERIMENTAL_DONT_USE_SaveLayerFlag);
const auto createInfo = SkBaseDevice::CreateInfo(info,