diff options
author | Matt Sarett <msarett@google.com> | 2016-11-22 11:31:41 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-22 18:27:47 +0000 |
commit | 22886c493596655d8fd9512951f9010869b7fbc5 (patch) | |
tree | 63419352a0a51ac631b5954d0e95ec1d73518d6d /tests/SurfaceTest.cpp | |
parent | 248ff02331d7f73ee4b6c5a7eabeae1080c16cd4 (diff) |
Add SkOverdrawCanvas to detect overdraw
This is the first part of a multi-part change to detect and
display gpu overdraw on Android.
BUG:32370375
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4907
Change-Id: Ibba9d7343f2fd57397fa1168a5a5b1ef6ef91287
Reviewed-on: https://skia-review.googlesource.com/4907
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'tests/SurfaceTest.cpp')
-rw-r--r-- | tests/SurfaceTest.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/SurfaceTest.cpp b/tests/SurfaceTest.cpp index 2ac8d29b3c..e613e1dd6b 100644 --- a/tests/SurfaceTest.cpp +++ b/tests/SurfaceTest.cpp @@ -1021,3 +1021,31 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(SurfaceCreationWithColorSpace_Gpu, reporter, } } #endif + +static void test_overdraw_surface(skiatest::Reporter* r, SkSurface* surface) { + std::unique_ptr<SkCanvas> canvas = ((SkSurface_Base*) surface)->onMakeOverdrawCanvas(); + canvas->drawPaint(SkPaint()); + sk_sp<SkImage> image = surface->makeImageSnapshot(); + + SkBitmap bitmap; + image->asLegacyBitmap(&bitmap, SkImage::kRO_LegacyBitmapMode); + bitmap.lockPixels(); + for (int y = 0; y < 10; y++) { + for (int x = 0; x < 10; x++) { + REPORTER_ASSERT(r, 1 == SkGetPackedA32(*bitmap.getAddr32(x, y))); + } + } +} + +DEF_TEST(OverdrawSurface_Raster, r) { + sk_sp<SkSurface> surface = create_surface(); + test_overdraw_surface(r, surface.get()); +} + +#if SK_SUPPORT_GPU +DEF_GPUTEST_FOR_RENDERING_CONTEXTS(OverdrawSurface_Gpu, r, ctxInfo) { + GrContext* context = ctxInfo.grContext(); + sk_sp<SkSurface> surface = create_gpu_surface(context); + test_overdraw_surface(r, surface.get()); +} +#endif |