aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/image
diff options
context:
space:
mode:
authorGravatar Herb Derby <herb@google.com>2017-02-14 15:06:23 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-02-14 15:06:35 +0000
commitbfdc87a62193aae20fac0bce37bed7b656f299bb (patch)
treea08542f5c7c91356257d1224451893725efa8a4e /src/image
parent8be952ad8c9deefe19cff36f9ad217563400f817 (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.cpp29
-rw-r--r--src/image/SkImageShader.h2
-rw-r--r--src/image/SkImage_Raster.cpp15
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) {