diff options
author | 2017-02-14 15:06:23 +0000 | |
---|---|---|
committer | 2017-02-14 15:06:35 +0000 | |
commit | bfdc87a62193aae20fac0bce37bed7b656f299bb (patch) | |
tree | a08542f5c7c91356257d1224451893725efa8a4e /src/image | |
parent | 8be952ad8c9deefe19cff36f9ad217563400f817 (diff) |
Revert "Revert "Always make SkImageShaders in heap.""
This reverts commit 07f665efb918f68e406b76a78d0b76d5c714f16c.
Reason for revert: Android code moved from priv api to real api
Original change's description:
> Revert "Always make SkImageShaders in heap."
>
> This reverts commit ff590a12441002d281254ec6a86070ac0a19263f.
>
> Reason for revert: This breaks the android roll because they are using
> a private call. Updating android tests to use new api.
>
> Original change's description:
> > Always make SkImageShaders in heap.
> >
> > I made a couple of measurments, and it looks like any differences is
> > well below the noise threshold.
> >
> > Just for the record run1: .9991 of baseline and run2 .9988 of baseline.
> > I was using top25 .skps as workload.
> >
> > TBR=mtklein@google.com
> >
> > Change-Id: If4fa06e5d5df72fb67dbb4bbb99c926f05765897
> > Reviewed-on: https://skia-review.googlesource.com/8341
> > Reviewed-by: Herb Derby <herb@google.com>
> > Commit-Queue: Herb Derby <herb@google.com>
> >
>
> TBR=mtklein@chromium.org,mtklein@google.com,herb@google.com,reviews@skia.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
>
> Change-Id: Ibdaafc796702e250933b62e5f4abb5e2ce8d40c0
> Reviewed-on: https://skia-review.googlesource.com/8393
> Commit-Queue: Herb Derby <herb@google.com>
> Reviewed-by: Herb Derby <herb@google.com>
>
TBR=mtklein@chromium.org,mtklein@google.com,herb@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I320b5ebf707d74ffafd8b70d69646b74a30f0ae8
Reviewed-on: https://skia-review.googlesource.com/8407
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Diffstat (limited to 'src/image')
-rw-r--r-- | src/image/SkImageShader.cpp | 29 | ||||
-rw-r--r-- | src/image/SkImageShader.h | 2 | ||||
-rw-r--r-- | src/image/SkImage_Raster.cpp | 15 |
3 files changed, 11 insertions, 35 deletions
diff --git a/src/image/SkImageShader.cpp b/src/image/SkImageShader.cpp index 64a09dd2dc..7e3874891c 100644 --- a/src/image/SkImageShader.cpp +++ b/src/image/SkImageShader.cpp @@ -97,23 +97,12 @@ static bool bitmap_is_too_big(int w, int h) { } sk_sp<SkShader> SkImageShader::Make(sk_sp<SkImage> image, TileMode tx, TileMode ty, - const SkMatrix* localMatrix, - SkTBlitterAllocator* allocator) { - SkShader* shader; + const SkMatrix* localMatrix) { if (!image || bitmap_is_too_big(image->width(), image->height())) { - if (nullptr == allocator) { - shader = new SkEmptyShader; - } else { - shader = allocator->createT<SkEmptyShader>(); - } + return sk_make_sp<SkEmptyShader>(); } else { - if (nullptr == allocator) { - shader = new SkImageShader(image, tx, ty, localMatrix); - } else { - shader = allocator->createT<SkImageShader>(image, tx, ty, localMatrix); - } + return sk_make_sp<SkImageShader>(image, tx, ty, localMatrix); } - return sk_sp<SkShader>(shader); } #ifndef SK_IGNORE_TO_STRING @@ -197,15 +186,9 @@ sk_sp<GrFragmentProcessor> SkImageShader::asFragmentProcessor(const AsFPArgs& ar sk_sp<SkShader> SkMakeBitmapShader(const SkBitmap& src, SkShader::TileMode tmx, SkShader::TileMode tmy, const SkMatrix* localMatrix, - SkCopyPixelsMode cpm, SkTBlitterAllocator* allocator) { - // Until we learn otherwise, it seems that any caller that is passing an allocator must be - // assuming that the returned shader will have a stack-frame lifetime, so we assert that - // they are also asking for kNever_SkCopyPixelsMode. If that proves otherwise, we can remove - // or modify this assert. - SkASSERT(!allocator || (kNever_SkCopyPixelsMode == cpm)); - - return SkImageShader::Make(SkMakeImageFromRasterBitmap(src, cpm, allocator), - tmx, tmy, localMatrix, allocator); + SkCopyPixelsMode cpm) { + return SkImageShader::Make(SkMakeImageFromRasterBitmap(src, cpm), + tmx, tmy, localMatrix); } static sk_sp<SkFlattenable> SkBitmapProcShader_CreateProc(SkReadBuffer& buffer) { diff --git a/src/image/SkImageShader.h b/src/image/SkImageShader.h index ef5e87c66d..8960812a06 100644 --- a/src/image/SkImageShader.h +++ b/src/image/SkImageShader.h @@ -15,7 +15,7 @@ class SkImageShader : public SkShader { public: static sk_sp<SkShader> Make(sk_sp<SkImage>, TileMode tx, TileMode ty, - const SkMatrix* localMatrix, SkTBlitterAllocator* = nullptr); + const SkMatrix* localMatrix); bool isOpaque() const override; diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp index b287789ea8..0364fc6b2a 100644 --- a/src/image/SkImage_Raster.cpp +++ b/src/image/SkImage_Raster.cpp @@ -301,8 +301,7 @@ sk_sp<SkImage> SkImage::MakeFromRaster(const SkPixmap& pmap, RasterReleaseProc p return sk_make_sp<SkImage_Raster>(pmap.info(), std::move(data), pmap.rowBytes(), pmap.ctable()); } -sk_sp<SkImage> SkMakeImageFromRasterBitmap(const SkBitmap& bm, SkCopyPixelsMode cpm, - SkTBlitterAllocator* allocator) { +sk_sp<SkImage> SkMakeImageFromRasterBitmap(const SkBitmap& bm, SkCopyPixelsMode cpm) { bool hasColorTable = false; if (kIndex_8_SkColorType == bm.colorType()) { SkAutoLockPixels autoLockPixels(bm); @@ -313,23 +312,17 @@ sk_sp<SkImage> SkMakeImageFromRasterBitmap(const SkBitmap& bm, SkCopyPixelsMode return nullptr; } - sk_sp<SkImage> image; if (kAlways_SkCopyPixelsMode == cpm || (!bm.isImmutable() && kNever_SkCopyPixelsMode != cpm)) { SkBitmap tmp(bm); tmp.lockPixels(); SkPixmap pmap; if (tmp.getPixels() && tmp.peekPixels(&pmap)) { - image = SkImage::MakeRasterCopy(pmap); + return SkImage::MakeRasterCopy(pmap); } } else { - if (allocator) { - image.reset(allocator->createT<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cpm)); - image.get()->ref(); // account for the allocator being an owner - } else { - image = sk_make_sp<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cpm); - } + return sk_make_sp<SkImage_Raster>(bm, kNever_SkCopyPixelsMode == cpm); } - return image; + return sk_sp<SkImage>(); } const SkPixelRef* SkBitmapImageGetPixelRef(const SkImage* image) { |