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);