Add support for using ANGLE in bench_pictures.

BUG=https://code.google.com/p/skia/issues/detail?id=1012

Other cleanups:
Remove setDeviceType from PictureBenchmark, since it is unnecessary.
Dereference PictureRenderer::fGrContext when done with it.
Make PictureRenderer::fGrContext and PictureRenderer::fGrContextFactory private, since they are not used by subclasses.

Review URL: https://codereview.appspot.com/7314063

git-svn-id: http://skia.googlecode.com/svn/trunk@7677 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/render_pictures_main.cpp b/tools/render_pictures_main.cpp
index a459bf2..3ab5628 100644
--- a/tools/render_pictures_main.cpp
+++ b/tools/render_pictures_main.cpp
@@ -40,6 +40,9 @@
 #if SK_SUPPORT_GPU
 " | gpu"
 #endif
+#if SK_ANGLE
+" | angle"
+#endif
 "]"
 , argv0);
     SkDebugf("\n\n");
@@ -111,6 +114,10 @@
     SkDebugf(
 "                     gpu, Render to the GPU.\n");
 #endif
+#if SK_ANGLE
+    SkDebugf(
+"                     angle, Render using angle.\n");
+#endif
 }
 
 static void make_output_filepath(SkString* path, const SkString& dir,
@@ -518,6 +525,11 @@
                 deviceType = sk_tools::PictureRenderer::kGPU_DeviceType;
             }
 #endif
+#if SK_ANGLE
+            else if (0 == strcmp(*argv, "angle")) {
+                deviceType = sk_tools::PictureRenderer::kAngle_DeviceType;
+            }
+#endif
             else {
                 SkSafeUnref(renderer);
                 SkDebugf("%s is not a valid mode for --device\n", *argv);
@@ -672,14 +684,22 @@
             }
         }
         if (numThreads > 1) {
+            switch (deviceType) {
 #if SK_SUPPORT_GPU
-            if (sk_tools::PictureRenderer::kGPU_DeviceType == deviceType) {
-                tiledRenderer->unref();
-                SkDebugf("GPU not compatible with multithreaded tiling.\n");
-                usage(argv0);
-                exit(-1);
-            }
+                case sk_tools::PictureRenderer::kGPU_DeviceType:
+                    // fall through
 #endif
+#if SK_ANGLE
+                case sk_tools::PictureRenderer::kAngle_DeviceType:
+#endif
+                    tiledRenderer->unref();
+                    SkDebugf("GPU not compatible with multithreaded tiling.\n");
+                    usage(argv0);
+                    exit(-1);
+                    break;
+                default:
+                    break;
+            }
         }
         renderer = tiledRenderer;
         if (usePipe) {
@@ -713,7 +733,10 @@
     renderer->setGridSize(gridWidth, gridHeight);
     renderer->setViewport(viewport);
     renderer->setScaleFactor(scaleFactor);
-    renderer->setDeviceType(deviceType);
+    if (!renderer->setDeviceType(deviceType)) {
+        SkDebugf("Invalid device type.\n");
+        exit(-1);
+    }
 }
 
 int tool_main(int argc, char** argv);