Index: tests/TextBlobCacheTest.cpp |
diff --git a/tests/TextBlobCacheTest.cpp b/tests/TextBlobCacheTest.cpp |
index c063040ecf2113fcb6f35a07c35c56b818aee74f..6f67382a0f6b4f3c22089348496fbd3801f61a3d 100644 |
--- a/tests/TextBlobCacheTest.cpp |
+++ b/tests/TextBlobCacheTest.cpp |
@@ -6,6 +6,7 @@ |
*/ |
#include "sk_tool_utils.h" |
+ |
#include "SkCanvas.h" |
#include "SkPaint.h" |
#include "SkPoint.h" |
@@ -24,6 +25,7 @@ |
#if SK_SUPPORT_GPU |
#include "GrContextFactory.h" |
+#include "GrTest.h" |
struct TextBlobWrapper { |
// This class assumes it 'owns' the textblob it wraps, and thus does not need to take a ref |
@@ -51,13 +53,21 @@ static const int kHeight = 768; |
// This test hammers the GPU textblobcache and font atlas |
static void text_blob_cache_inner(skiatest::Reporter* reporter, GrContextFactory* factory, |
- int maxTotalText, int maxGlyphID, int maxFamilies, bool normal) { |
+ int maxTotalText, int maxGlyphID, int maxFamilies, bool normal, |
+ bool stressTest) { |
// setup surface |
uint32_t flags = 0; |
SkSurfaceProps props(flags, SkSurfaceProps::kLegacyFontHost_InitType); |
// We don't typically actually draw with this unittest |
GrContext* ctx = factory->get(GrContextFactory::kNull_GLContextType); |
+ |
+ // configure our context for maximum stressing of cache and atlas |
+ if (stressTest) { |
+ GrTest::SetupAlwaysEvictAtlas(ctx); |
+ ctx->setTextBlobCacheLimit_ForTesting(0); |
+ } |
+ |
SkImageInfo info = SkImageInfo::Make(kWidth, kHeight, kN32_SkColorType, kPremul_SkAlphaType); |
SkAutoTUnref<SkSurface> surface(SkSurface::NewRenderTarget(ctx, SkSurface::kNo_Budgeted, info, |
0, &props)); |
@@ -151,14 +161,18 @@ static void text_blob_cache_inner(skiatest::Reporter* reporter, GrContextFactory |
} |
DEF_GPUTEST(TextBlobCache, reporter, factory) { |
- text_blob_cache_inner(reporter, factory, 4096, 256, 30, true); |
+ text_blob_cache_inner(reporter, factory, 1024, 256, 30, true, false); |
+} |
+ |
+DEF_GPUTEST(TextBlobStressCache, reporter, factory) { |
+ text_blob_cache_inner(reporter, factory, 256, 256, 10, true, true); |
} |
DEF_GPUTEST(TextBlobAbnormal, reporter, factory) { |
-#ifdef SK_BUILD_FOR_ANDROID |
- text_blob_cache_inner(reporter, factory, 256, 256, 30, false); |
-#else |
- text_blob_cache_inner(reporter, factory, 512, 256, 30, false); |
-#endif |
+ text_blob_cache_inner(reporter, factory, 256, 256, 10, false, false); |
+} |
+ |
+DEF_GPUTEST(TextBlobStressAbnormal, reporter, factory) { |
+ text_blob_cache_inner(reporter, factory, 256, 256, 10, false, true); |
} |
#endif |