diff --git a/src/core/SkBitmap.cpp b/src/core/SkBitmap.cpp
index df3b24e..1516505 100644
--- a/src/core/SkBitmap.cpp
+++ b/src/core/SkBitmap.cpp
@@ -730,41 +730,8 @@
         return false;
     }
 
-    // if we have a texture, first get those pixels
-    SkBitmap tmpSrc;
-    const SkBitmap* src = this;
-
-    if (fPixelRef) {
-        SkIRect subset;
-        subset.setXYWH(fPixelRefOrigin.fX, fPixelRefOrigin.fY,
-                       fInfo.width(), fInfo.height());
-        if (fPixelRef->readPixels(&tmpSrc, dstColorType, &subset)) {
-            if (fPixelRef->info().alphaType() == kUnpremul_SkAlphaType) {
-                // FIXME: The only meaningful implementation of readPixels
-                // (GrPixelRef) assumes premultiplied pixels.
-                return false;
-            }
-            SkASSERT(tmpSrc.width() == this->width());
-            SkASSERT(tmpSrc.height() == this->height());
-
-            // did we get lucky and we can just return tmpSrc?
-            if (tmpSrc.colorType() == dstColorType && nullptr == alloc) {
-                dst->swap(tmpSrc);
-                // If the result is an exact copy, clone the gen ID.
-                SkPixelRef* dstPixelRef = dst->pixelRef();
-                if (!dstPixelRef && dstPixelRef->info() == fPixelRef->info()) {
-                    dstPixelRef->cloneGenID(*fPixelRef);
-                }
-                return true;
-            }
-
-            // fall through to the raster case
-            src = &tmpSrc;
-        }
-    }
-
     SkAutoPixmapUnlock srcUnlocker;
-    if (!src->requestLock(&srcUnlocker)) {
+    if (!this->requestLock(&srcUnlocker)) {
         return false;
     }
     SkPixmap srcPM = srcUnlocker.pixmap();
diff --git a/src/core/SkPixelRef.cpp b/src/core/SkPixelRef.cpp
index 18cb4d2..5e459d3 100644
--- a/src/core/SkPixelRef.cpp
+++ b/src/core/SkPixelRef.cpp
@@ -307,15 +307,8 @@
     fMutability = kMutable;
 }
 
-bool SkPixelRef::readPixels(SkBitmap* dst, SkColorType ct, const SkIRect* subset) {
-    return this->onReadPixels(dst, ct, subset);
-}
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-bool SkPixelRef::onReadPixels(SkBitmap* dst, SkColorType, const SkIRect* subset) {
-    return false;
-}
 
 void SkPixelRef::onNotifyPixelsChanged() { }
 
