From cbc5bccebec983cdd7bea4f10373ec3af115def3 Mon Sep 17 00:00:00 2001 From: robertphillips Date: Fri, 19 Feb 2016 10:41:12 -0800 Subject: [PATCH] Add GPU-backed SkImage case to ImageFilterCache unit test GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1713073002 Review URL: https://codereview.chromium.org/1713073002 --- tests/ImageFilterCacheTest.cpp | 47 ++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/tests/ImageFilterCacheTest.cpp b/tests/ImageFilterCacheTest.cpp index f2e662f56c..175d17c946 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 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 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 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 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 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 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 srcTexture(create_texture(context)); if (!srcTexture) { return; }