disable LCD for layers w/ filters

BUG=468311

see also skiabug.com/3567

Review URL: https://codereview.chromium.org/1002603003
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 11dc739..8426f09 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -918,10 +918,12 @@
     }
 
     bool isOpaque = !SkToBool(flags & kHasAlphaLayer_SaveFlag);
-    if (isOpaque && paint) {
+    SkPixelGeometry geo = fProps.pixelGeometry();
+    if (paint) {
         // TODO: perhaps add a query to filters so we might preserve opaqueness...
         if (paint->getImageFilter() || paint->getColorFilter()) {
             isOpaque = false;
+            geo = kUnknown_SkPixelGeometry;
         }
     }
     SkImageInfo info = SkImageInfo::MakeN32(ir.width(), ir.height(),
@@ -942,8 +944,7 @@
         usage = SkBaseDevice::kPossible_TileUsage;
     }
 #endif
-    device = device->onCreateDevice(SkBaseDevice::CreateInfo(info, usage, fProps.pixelGeometry()),
-                                    paint);
+    device = device->onCreateDevice(SkBaseDevice::CreateInfo(info, usage, geo), paint);
     if (NULL == device) {
         SkErrorInternals::SetError( kInternalError_SkError,
                                     "Unable to create device for layer.");
diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp
index d76a180..6be9178 100644
--- a/src/core/SkDevice.cpp
+++ b/src/core/SkDevice.cpp
@@ -68,6 +68,9 @@
                                                          SkPixelGeometry geo) {
     switch (tileUsage) {
         case kPossible_TileUsage:
+            // (we think) for compatibility with old clients, we assume this layer can support LCD
+            // even though they may not have marked it as opaque... seems like we should update
+            // our callers (reed/robertphilips).
             break;
         case kNever_TileUsage:
             if (info.alphaType() != kOpaque_SkAlphaType) {