aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/core/SkImageFilter.cpp13
-rw-r--r--src/core/SkSpecialImage.cpp40
-rw-r--r--src/core/SkSpecialImage.h11
-rw-r--r--tests/SpecialImageTest.cpp78
4 files changed, 3 insertions, 139 deletions
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp
index 524a475b71..1a4c876d61 100644
--- a/src/core/SkImageFilter.cpp
+++ b/src/core/SkImageFilter.cpp
@@ -596,18 +596,7 @@ SkSpecialImage* SkImageFilter::filterInput(int index,
return SkRef(src);
}
- SkAutoTUnref<SkSpecialImage> result(input->filterImage(src, this->mapContext(ctx), offset));
-
-#if SK_SUPPORT_GPU
- if (src->peekTexture() && !result->peekTexture()) {
- // Keep the result on the GPU - this is still required for some
- // image filters that don't support GPU in all cases
- GrContext* context = src->peekTexture()->getContext();
- return result->makeTextureImage(src->internal_getProxy(), context).release();
- }
-#endif
-
- return result.release();
+ return input->filterImage(src, this->mapContext(ctx), offset);
}
#if SK_SUPPORT_GPU
diff --git a/src/core/SkSpecialImage.cpp b/src/core/SkSpecialImage.cpp
index 991e163515..e90c655a58 100644
--- a/src/core/SkSpecialImage.cpp
+++ b/src/core/SkSpecialImage.cpp
@@ -4,16 +4,10 @@
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file
*/
-#include "SkSpecialImage.h"
-
-#if SK_SUPPORT_GPU
-#include "GrTexture.h"
-#include "GrTextureParams.h"
-#include "SkGr.h"
-#endif
#include "SkCanvas.h"
#include "SkImage_Base.h"
+#include "SkSpecialImage.h"
#include "SkSpecialSurface.h"
///////////////////////////////////////////////////////////////////////////////
@@ -48,38 +42,6 @@ static inline const SkSpecialImage_Base* as_SIB(const SkSpecialImage* image) {
return static_cast<const SkSpecialImage_Base*>(image);
}
-sk_sp<SkSpecialImage> SkSpecialImage::makeTextureImage(SkImageFilter::Proxy* proxy,
- GrContext* context) {
-#if SK_SUPPORT_GPU
- if (!context) {
- return nullptr;
- }
- if (GrTexture* peek = as_SIB(this)->peekTexture()) {
- return peek->getContext() == context ? sk_sp<SkSpecialImage>(SkRef(this)) : nullptr;
- }
-
- SkBitmap bmp;
- if (!this->internal_getBM(&bmp)) {
- return nullptr;
- }
-
- SkAutoTUnref<GrTexture> resultTex(
- GrRefCachedBitmapTexture(context, bmp, GrTextureParams::ClampNoFilter()));
- if (!resultTex) {
- return nullptr;
- }
-
- SkAlphaType at = this->isOpaque() ? kOpaque_SkAlphaType : kPremul_SkAlphaType;
-
- return SkSpecialImage::MakeFromGpu(proxy,
- SkIRect::MakeWH(resultTex->width(), resultTex->height()),
- this->uniqueID(),
- resultTex, at);
-#else
- return nullptr;
-#endif
-}
-
void SkSpecialImage::draw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) const {
return as_SIB(this)->onDraw(canvas, x, y, paint);
}
diff --git a/src/core/SkSpecialImage.h b/src/core/SkSpecialImage.h
index 47ad6ccab7..1a01a5abc7 100644
--- a/src/core/SkSpecialImage.h
+++ b/src/core/SkSpecialImage.h
@@ -14,16 +14,12 @@
// remove this when internal_getProxy goes away (see skbug.com/4965)
#include "SkImageFilter.h"
-#include "SkImageInfo.h" // for SkAlphaType
-
-class GrContext;
class GrTexture;
class SkBitmap;
class SkCanvas;
class SkImage;
struct SkImageInfo;
class SkPaint;
-class SkPixmap;
class SkSpecialSurface;
enum {
@@ -55,13 +51,6 @@ public:
virtual size_t getSize() const = 0;
/**
- * Ensures that a special image is backed by a texture (when GrContext is non-null). If no
- * transformation is required, the returned image may be the same as this special image.
- * If this special image is from a different GrContext, this will fail.
- */
- sk_sp<SkSpecialImage> makeTextureImage(SkImageFilter::Proxy*, GrContext*);
-
- /**
* Draw this SpecialImage into the canvas.
*/
void draw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*) const;
diff --git a/tests/SpecialImageTest.cpp b/tests/SpecialImageTest.cpp
index 3240fbd3a7..233ce2cee1 100644
--- a/tests/SpecialImageTest.cpp
+++ b/tests/SpecialImageTest.cpp
@@ -174,81 +174,6 @@ DEF_TEST(SpecialImage_Pixmap, reporter) {
#if SK_SUPPORT_GPU
-
-static void test_texture_backed(skiatest::Reporter* reporter,
- const sk_sp<SkSpecialImage>& orig,
- const sk_sp<SkSpecialImage>& gpuBacked) {
- REPORTER_ASSERT(reporter, gpuBacked);
- REPORTER_ASSERT(reporter, gpuBacked->peekTexture());
- REPORTER_ASSERT(reporter, gpuBacked->uniqueID() == orig->uniqueID());
- REPORTER_ASSERT(reporter, gpuBacked->subset().width() == orig->subset().width() &&
- gpuBacked->subset().height() == orig->subset().height());
-}
-
-// Test out the SkSpecialImage::makeTextureImage entry point
-DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SpecialImage_MakeTexture, reporter, context) {
- SkBitmap bm = create_bm();
-
- const SkIRect& subset = SkIRect::MakeXYWH(kPad, kPad, kSmallerSize, kSmallerSize);
-
- {
- // raster
- sk_sp<SkSpecialImage> rasterImage(SkSpecialImage::MakeFromRaster(
- nullptr,
- SkIRect::MakeWH(kFullSize,
- kFullSize),
- bm));
-
- {
- sk_sp<SkSpecialImage> fromRaster(rasterImage->makeTextureImage(nullptr, context));
- test_texture_backed(reporter, rasterImage, fromRaster);
- }
-
- {
- sk_sp<SkSpecialImage> subRasterImage(rasterImage->makeSubset(subset));
-
- sk_sp<SkSpecialImage> fromSubRaster(subRasterImage->makeTextureImage(nullptr, context));
- test_texture_backed(reporter, subRasterImage, fromSubRaster);
- }
- }
-
- {
- // gpu
- GrSurfaceDesc desc;
- desc.fConfig = kSkia8888_GrPixelConfig;
- desc.fFlags = kNone_GrSurfaceFlags;
- desc.fWidth = kFullSize;
- desc.fHeight = kFullSize;
-
- SkAutoTUnref<GrTexture> texture(context->textureProvider()->createTexture(desc,
- SkBudgeted::kNo,
- bm.getPixels(),
- 0));
- if (!texture) {
- return;
- }
-
- sk_sp<SkSpecialImage> gpuImage(SkSpecialImage::MakeFromGpu(
- nullptr,
- SkIRect::MakeWH(kFullSize,
- kFullSize),
- kNeedNewImageUniqueID_SpecialImage,
- texture));
-
- {
- sk_sp<SkSpecialImage> fromGPU(gpuImage->makeTextureImage(nullptr, context));
- test_texture_backed(reporter, gpuImage, fromGPU);
- }
-
- {
- sk_sp<SkSpecialImage> subGPUImage(gpuImage->makeSubset(subset));
-
- sk_sp<SkSpecialImage> fromSubGPU(subGPUImage->makeTextureImage(nullptr, context));
- test_texture_backed(reporter, subGPUImage, fromSubGPU);
- }
- }
-}
-
DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SpecialImage_Gpu, reporter, context) {
SkBitmap bm = create_bm();
@@ -258,8 +183,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SpecialImage_Gpu, reporter, context) {
desc.fWidth = kFullSize;
desc.fHeight = kFullSize;
- SkAutoTUnref<GrTexture> texture(context->textureProvider()->createTexture(desc,
- SkBudgeted::kNo,
+ SkAutoTUnref<GrTexture> texture(context->textureProvider()->createTexture(desc, SkBudgeted::kNo,
bm.getPixels(), 0));
if (!texture) {
return;