aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/GrTextureMipMapInvalidationTest.cpp
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2018-06-07 15:07:50 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-07 19:35:01 +0000
commitcd2c3f9055452d413d6be7ea6dc63fd1922fe994 (patch)
treef5040726b08c094f547a85b957814e561b5ba550 /tests/GrTextureMipMapInvalidationTest.cpp
parentc174cc675cbc190c43372d53fb89711663ac945f (diff)
Require mips to be allocated at texture creation time and disable late allocations.
If we get a non-mipped texture for a draw that wants to be use mip map filter, we will copy the texture into a new mipped texture. Clean up of unused code in the GPU backends for reallocating for mips will be done in a follow up CL. Bug: skia: Change-Id: Idab588c1abf4bbbf7eeceb3727d500e5df274188 Reviewed-on: https://skia-review.googlesource.com/132830 Reviewed-by: Brian Salomon <bsalomon@google.com> Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'tests/GrTextureMipMapInvalidationTest.cpp')
-rw-r--r--tests/GrTextureMipMapInvalidationTest.cpp50
1 files changed, 27 insertions, 23 deletions
diff --git a/tests/GrTextureMipMapInvalidationTest.cpp b/tests/GrTextureMipMapInvalidationTest.cpp
index d832889144..8da79c9565 100644
--- a/tests/GrTextureMipMapInvalidationTest.cpp
+++ b/tests/GrTextureMipMapInvalidationTest.cpp
@@ -27,27 +27,31 @@ DEF_GPUTEST_FOR_NULLGL_CONTEXT(GrTextureMipMapInvalidationTest, reporter, ctxInf
GrContext* context = ctxInfo.grContext();
auto info = SkImageInfo::MakeN32Premul(256, 256);
- auto surf1 = SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, info);
- auto surf2 = SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, info);
- // Draw something just in case we ever had a solid color optimization
- surf1->getCanvas()->drawCircle(128, 128, 50, SkPaint());
- surf1->getCanvas()->flush();
-
- // No mipmaps initially
- REPORTER_ASSERT(reporter, !isMipped(surf1.get()));
-
- // Painting with downscale and medium filter quality should result in mipmap creation
- SkPaint paint;
- paint.setFilterQuality(kMedium_SkFilterQuality);
- surf2->getCanvas()->scale(0.2f, 0.2f);
- surf2->getCanvas()->drawImage(surf1->makeImageSnapshot(), 0, 0, &paint);
- surf2->getCanvas()->flush();
- REPORTER_ASSERT(reporter, isMipped(surf1.get()));
- REPORTER_ASSERT(reporter, !mipsAreDirty(surf1.get()));
-
- // Changing the contents of the surface should invalidate the mipmap, but not de-allocate
- surf1->getCanvas()->drawCircle(128, 128, 100, SkPaint());
- surf1->getCanvas()->flush();
- REPORTER_ASSERT(reporter, isMipped(surf1.get()));
- REPORTER_ASSERT(reporter, mipsAreDirty(surf1.get()));
+ for (auto allocateMips : {false, true}) {
+ auto surf1 = SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, info, 0,
+ kBottomLeft_GrSurfaceOrigin, nullptr,
+ allocateMips);
+ auto surf2 = SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, info);
+ // Draw something just in case we ever had a solid color optimization
+ surf1->getCanvas()->drawCircle(128, 128, 50, SkPaint());
+ surf1->getCanvas()->flush();
+
+ // No mipmaps initially
+ REPORTER_ASSERT(reporter, isMipped(surf1.get()) == allocateMips);
+
+ // Painting with downscale and medium filter quality should result in mipmap creation
+ SkPaint paint;
+ paint.setFilterQuality(kMedium_SkFilterQuality);
+ surf2->getCanvas()->scale(0.2f, 0.2f);
+ surf2->getCanvas()->drawImage(surf1->makeImageSnapshot(), 0, 0, &paint);
+ surf2->getCanvas()->flush();
+ REPORTER_ASSERT(reporter, isMipped(surf1.get()) == allocateMips);
+ REPORTER_ASSERT(reporter, !allocateMips || !mipsAreDirty(surf1.get()));
+
+ // Changing the contents of the surface should invalidate the mipmap, but not de-allocate
+ surf1->getCanvas()->drawCircle(128, 128, 100, SkPaint());
+ surf1->getCanvas()->flush();
+ REPORTER_ASSERT(reporter, isMipped(surf1.get()) == allocateMips);
+ REPORTER_ASSERT(reporter, mipsAreDirty(surf1.get()));
+ }
}