Index: tests/ImageFilterCacheTest.cpp |
diff --git a/tests/ImageFilterCacheTest.cpp b/tests/ImageFilterCacheTest.cpp |
index f2e662f56c8b7ed6b2c7a7022fb1304398e21b45..175d17c94650e30a55b053712bfd4ea626ddd36d 100644 |
--- a/tests/ImageFilterCacheTest.cpp |
+++ b/tests/ImageFilterCacheTest.cpp |
@@ -147,11 +147,9 @@ DEF_TEST(ImageFilterCache_RasterBacked, reporter) { |
test_explicit_purging(reporter, fullImg, subsetImg); |
} |
-DEF_TEST(ImageFilterCache_ImageBacked, reporter) { |
- SkBitmap srcBM = create_bm(); |
- |
- SkAutoTUnref<SkImage> srcImage(SkImage::NewFromBitmap(srcBM)); |
+// Shared test code for both the raster and gpu-backed image cases |
+static void test_image_backed(skiatest::Reporter* reporter, SkImage* srcImage) { |
const SkIRect& full = SkIRect::MakeWH(kFullSize, kFullSize); |
SkAutoTUnref<SkSpecialImage> fullImg(SkSpecialImage::NewFromImage(full, srcImage)); |
@@ -166,10 +164,18 @@ DEF_TEST(ImageFilterCache_ImageBacked, reporter) { |
test_explicit_purging(reporter, fullImg, subsetImg); |
} |
+DEF_TEST(ImageFilterCache_ImageBackedRaster, reporter) { |
+ SkBitmap srcBM = create_bm(); |
+ |
+ SkAutoTUnref<SkImage> srcImage(SkImage::NewFromBitmap(srcBM)); |
+ |
+ test_image_backed(reporter, srcImage); |
+} |
+ |
#if SK_SUPPORT_GPU |
#include "GrContext.h" |
-DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterCache_GPUBacked, reporter, context) { |
+static GrTexture* create_texture(GrContext* context) { |
SkBitmap srcBM = create_bm(); |
GrSurfaceDesc desc; |
@@ -178,9 +184,34 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterCache_GPUBacked, reporter, context |
desc.fWidth = kFullSize; |
desc.fHeight = kFullSize; |
- SkAutoTUnref<GrTexture> srcTexture(context->textureProvider()->createTexture(desc, false, |
- srcBM.getPixels(), |
- 0)); |
+ return context->textureProvider()->createTexture(desc, false, srcBM.getPixels(), 0); |
+} |
+ |
+DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterCache_ImageBackedGPU, reporter, context) { |
+ SkAutoTUnref<GrTexture> srcTexture(create_texture(context)); |
+ if (!srcTexture) { |
+ return; |
+ } |
+ |
+ GrBackendTextureDesc backendDesc; |
+ backendDesc.fConfig = kSkia8888_GrPixelConfig; |
+ backendDesc.fFlags = kNone_GrBackendTextureFlag; |
+ backendDesc.fWidth = kFullSize; |
+ backendDesc.fHeight = kFullSize; |
+ backendDesc.fSampleCnt = 0; |
+ backendDesc.fTextureHandle = srcTexture->getTextureHandle(); |
+ SkAutoTUnref<SkImage> srcImage(SkImage::NewFromTexture(context, backendDesc, |
+ kPremul_SkAlphaType)); |
+ if (!srcImage) { |
+ return; |
+ } |
+ |
+ test_image_backed(reporter, srcImage); |
+} |
+ |
+DEF_GPUTEST_FOR_RENDERING_CONTEXTS(ImageFilterCache_GPUBacked, reporter, context) { |
+ |
+ SkAutoTUnref<GrTexture> srcTexture(create_texture(context)); |
if (!srcTexture) { |
return; |
} |