| Index: bench/benchmain.cpp
|
| ===================================================================
|
| --- bench/benchmain.cpp (revision 8044)
|
| +++ bench/benchmain.cpp (working copy)
|
| @@ -281,8 +281,13 @@
|
| SkDebugf("Usage: bench [-o outDir] [--repeat nr] [--logPerIter] "
|
| "[--timers [wcgWC]*] [--rotate]\n"
|
| " [--scale] [--clip] [--min] [--forceAA 1|0] [--forceFilter 1|0]\n"
|
| - " [--forceDither 1|0] [--forceBlend 1|0] [--strokeWidth width]\n"
|
| - " [--match name] [--mode normal|deferred|deferredSilent|record|picturerecord]\n"
|
| + " [--forceDither 1|0] [--forceBlend 1|0]"
|
| +#if SK_SUPPORT_GPU
|
| + " [--gpuCacheSize <bytes> <count>]"
|
| +#endif
|
| + "\n"
|
| + " [--strokeWidth width] [--match name]\n"
|
| + " [--mode normal|deferred|deferredSilent|record|picturerecord]\n"
|
| " [--config 8888|565|GPU|ANGLE|NULLGPU] [-Dfoo bar] [--logFile filename]\n"
|
| " [-h|--help]");
|
| SkDebugf("\n\n");
|
| @@ -304,6 +309,11 @@
|
| "Enable/disable dithering, default is disabled.\n");
|
| SkDebugf(" --forceBlend 1|0 : "
|
| "Enable/disable dithering, default is disabled.\n");
|
| +#if SK_SUPPORT_GPU
|
| + SkDebugf(" --gpuCacheSize <bytes> <count>: "
|
| + "limits gpu cache to bytes size or object count.\n");
|
| + SkDebugf(" -1 for either value means use the default. 0 for either disables the cache.\n");
|
| +#endif
|
| SkDebugf(" --strokeWidth width : The width for path stroke.\n");
|
| SkDebugf(" --match name : Only run bench whose name is matched.\n");
|
| SkDebugf(" --mode normal|deferred|deferredSilent|record|picturerecord :\n"
|
| @@ -350,6 +360,14 @@
|
| bool doClip = false;
|
| bool printMin = false;
|
| bool hasStrokeWidth = false;
|
| +
|
| +#if SK_SUPPORT_GPU
|
| + struct {
|
| + size_t fBytes;
|
| + int fCount;
|
| + } gpuCacheSize = { -1, -1 }; // -1s mean use the default
|
| +#endif
|
| +
|
| float strokeWidth;
|
| SkTDArray<const char*> fMatches;
|
| benchModes benchMode = kNormal_benchModes;
|
| @@ -447,6 +465,17 @@
|
| return -1;
|
| }
|
| forceAlpha = wantAlpha ? 0x80 : 0xFF;
|
| +#if SK_SUPPORT_GPU
|
| + } else if (strcmp(*argv, "--gpuCacheSize") == 0) {
|
| + if (stop - argv > 2) {
|
| + gpuCacheSize.fBytes = atoi(*++argv);
|
| + gpuCacheSize.fCount = atoi(*++argv);
|
| + } else {
|
| + SkDebugf("missing arg for --gpuCacheSize\n");
|
| + help();
|
| + return -1;
|
| + }
|
| +#endif
|
| } else if (strcmp(*argv, "--mode") == 0) {
|
| argv++;
|
| if (argv < stop) {
|
| @@ -621,11 +650,25 @@
|
| SkTArray<BenchTimer*> timers(SK_ARRAY_COUNT(gConfigs));
|
| for (size_t i = 0; i < SK_ARRAY_COUNT(gConfigs); ++i) {
|
| #if SK_SUPPORT_GPU
|
| - SkGLContextHelper* ctx = NULL;
|
| + SkGLContextHelper* glCtx = NULL;
|
| if (kGPU_Backend == gConfigs[i].fBackend) {
|
| - ctx = gContextFactory.getGLContext(gConfigs[i].fContextType);
|
| + GrContext* context = gContextFactory.get(gConfigs[i].fContextType);
|
| + if (NULL != context) {
|
| + // Set the user specified cache limits if non-default.
|
| + size_t bytes;
|
| + int count;
|
| + context->getTextureCacheLimits(&count, &bytes);
|
| + if (-1 != gpuCacheSize.fBytes) {
|
| + bytes = gpuCacheSize.fBytes;
|
| + }
|
| + if (-1 != gpuCacheSize.fCount) {
|
| + count = gpuCacheSize.fCount;
|
| + }
|
| + context->setTextureCacheLimits(count, bytes);
|
| + }
|
| + glCtx = gContextFactory.getGLContext(gConfigs[i].fContextType);
|
| }
|
| - timers.push_back(SkNEW_ARGS(BenchTimer, (ctx)));
|
| + timers.push_back(SkNEW_ARGS(BenchTimer, (glCtx)));
|
| #else
|
| timers.push_back(SkNEW(BenchTimer));
|
| #endif
|
|
|