Implement a benchmark for GrResourceCache

Adds "grresourcecache_add" and "grresourcecache_find" bench tests to test
GrResourceCache::add and GrResourceCache::find. The tests work only
with GPU backends, since GrResourceCache needs an GrGpu.

Modifies bench tests to override SkBenchmark::isSuitableFor(Backend)
function that specifies what kind of backend the test is inteded
for. This replaces the previous "fIsRendering" flag that would
indicate test that did no rendering.

Adds SkCanvas::getGrContext() call to get the GrContext that the
canvas ends up drawing to. The member function solves a common
use-case that is also used in the benchmark added here.

R=mtklein@google.com, bsalomon@google.com

Author: kkinnunen@nvidia.com

Review URL: https://codereview.chromium.org/73643005

git-svn-id: http://skia.googlecode.com/svn/trunk@12334 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/SkBenchmark.h b/bench/SkBenchmark.h
index ec40077..77e2357 100644
--- a/bench/SkBenchmark.h
+++ b/bench/SkBenchmark.h
@@ -49,6 +49,19 @@
     const char* getName();
     SkIPoint getSize();
 
+    enum Backend {
+        kNonRendering_Backend,
+        kRaster_Backend,
+        kGPU_Backend,
+        kPDF_Backend,
+    };
+
+    // Call to determine whether the benchmark is intended for
+    // the rendering mode.
+    virtual bool isSuitableFor(Backend backend) {
+        return backend != kNonRendering_Backend;
+    }
+
     // Call before draw, allows the benchmark to do setup work outside of the
     // timer. When a benchmark is repeatedly drawn, this should be called once
     // before the initial draw.
@@ -77,13 +90,6 @@
         fDither = state;
     }
 
-    /** If true; the benchmark does rendering; if false, the benchmark
-        doesn't, and so need not be re-run in every different rendering
-        mode. */
-    bool isRendering() {
-        return fIsRendering;
-    }
-
     /** Assign masks for paint-flags. These will be applied when setupPaint()
      *  is called.
      *
@@ -120,8 +126,6 @@
     virtual void onPostDraw() {}
 
     virtual SkIPoint onGetSize();
-    /// Defaults to true.
-    bool    fIsRendering;
 
 private:
     int     fForceAlpha;