Chromium Code Reviews| Index: src/core/SkSpecialImage.cpp | 
| diff --git a/src/core/SkSpecialImage.cpp b/src/core/SkSpecialImage.cpp | 
| index 0bbe50a688607ac9415b23582d29d3b4a3b93578..b9d4f21fa13fe52c207c234327fe53b908fb0a96 100644 | 
| --- a/src/core/SkSpecialImage.cpp | 
| +++ b/src/core/SkSpecialImage.cpp | 
| @@ -138,11 +138,23 @@ public: | 
| GrTexture* onPeekTexture() const override { return as_IB(fImage.get())->peekTexture(); } | 
| bool getBitmap(SkBitmap* result) const override { | 
| - return false; | 
| + if (GrTexture* texture = as_IB(fImage.get())->peekTexture()) { | 
| + const SkImageInfo info = GrMakeInfoFromTexture(texture, | 
| + fImage->width(), fImage->height(), | 
| + fImage->isOpaque()); | 
| + if (!result->setInfo(info)) { | 
| + return false; | 
| + } | 
| + | 
| + result->setPixelRef(new SkGrPixelRef(info, texture))->unref(); | 
| 
 
Stephen White
2016/03/07 21:47:26
I think this will break the no-GPU build, and prob
 
robertphillips
2016/03/08 16:45:29
Done.
I'll rename getBitmap in a separate CL thou
 
 | 
| + return true; | 
| + } | 
| + | 
| + return as_IB(fImage.get())->asBitmapForImageFilters(result); | 
| } | 
| bool testingOnlyOnGetROPixels(SkBitmap* result) const override { | 
| - return false; | 
| + return fImage->asLegacyBitmap(result, SkImage::kRO_LegacyBitmapMode); | 
| } | 
| SkSpecialSurface* onNewSurface(const SkImageInfo& info) const override { | 
| @@ -178,9 +190,11 @@ static bool rect_fits(const SkIRect& rect, int width, int height) { | 
| } | 
| #endif | 
| -SkSpecialImage* SkSpecialImage::NewFromImage(const SkIRect& subset, const SkImage* image) { | 
| +SkSpecialImage* SkSpecialImage::NewFromImage(SkImageFilter::Proxy* proxy, | 
| + const SkIRect& subset, | 
| + const SkImage* image) { | 
| SkASSERT(rect_fits(subset, image->width(), image->height())); | 
| - return new SkSpecialImage_Image(nullptr, subset, image); | 
| + return new SkSpecialImage_Image(proxy, subset, image); | 
| } | 
| /////////////////////////////////////////////////////////////////////////////// |