diff --git a/bench/benchmain.cpp b/bench/benchmain.cpp
index b16cca3..9c7b442 100644
--- a/bench/benchmain.cpp
+++ b/bench/benchmain.cpp
@@ -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
