diff options
author | robertphillips <robertphillips@google.com> | 2016-03-18 08:14:27 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-18 08:14:27 -0700 |
commit | 83c17fa56b23159166394cb3feb431ffafbbab48 (patch) | |
tree | 5a13d5597db58b5baccd2ac599706e1c4f24a8bd /tests | |
parent | 2b1b40e11afc41452b4d2f74cdebb1b6e6f7cc96 (diff) |
Add SkSpecialImage::makeTextureImage entry point
This is calved off of: https://codereview.chromium.org/1785643003 (Switch SkBlurImageFilter over to new onFilterImage interface)
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1813813002
Committed: https://skia.googlesource.com/skia/+/05849018c85403a34b88819db1c4bcf713b70a2b
Review URL: https://codereview.chromium.org/1813813002
Diffstat (limited to 'tests')
-rw-r--r-- | tests/SpecialImageTest.cpp | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/tests/SpecialImageTest.cpp b/tests/SpecialImageTest.cpp index 233ce2cee1..3240fbd3a7 100644 --- a/tests/SpecialImageTest.cpp +++ b/tests/SpecialImageTest.cpp @@ -174,6 +174,81 @@ 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(); @@ -183,7 +258,8 @@ 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; |