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/bench_pictures_main.cpp b/tools/bench_pictures_main.cpp
index b485aff..579830d 100644
--- a/tools/bench_pictures_main.cpp
+++ b/tools/bench_pictures_main.cpp
@@ -130,6 +130,9 @@
" [--device bitmap"
#if SK_SUPPORT_GPU
" | gpu"
+#if SK_ANGLE
+" | angle"
+#endif
#endif
"]\n"
" [--filter [%s]:\n [%s]]\n"
@@ -204,6 +207,10 @@
#if SK_SUPPORT_GPU
SkDebugf(
" gpu, Render to the GPU.\n");
+#if SK_ANGLE
+ SkDebugf(
+" angle, Render using Angle.\n");
+#endif
#endif
SkDebugf("\n");
SkDebugf(
@@ -480,6 +487,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 {
SkString err;
err.printf("%s is not a valid mode for --device\n", *argv);
@@ -701,13 +713,21 @@
}
}
if (numThreads > 1) {
+ switch (deviceType) {
#if SK_SUPPORT_GPU
- if (sk_tools::PictureRenderer::kGPU_DeviceType == deviceType) {
- tiledRenderer->unref();
- gLogger.logError("GPU not compatible with multithreaded tiling.\n");
- PRINT_USAGE_AND_EXIT;
- }
+ case sk_tools::PictureRenderer::kGPU_DeviceType:
+ // fall through
#endif
+#if SK_ANGLE
+ case sk_tools::PictureRenderer::kAngle_DeviceType:
+#endif
+ tiledRenderer->unref();
+ gLogger.logError("GPU not compatible with multithreaded tiling.\n");
+ PRINT_USAGE_AND_EXIT;
+ break;
+ default:
+ break;
+ }
}
renderer.reset(tiledRenderer);
if (usePipe) {
@@ -740,9 +760,12 @@
renderer->setGridSize(gridWidth, gridHeight);
renderer->setViewport(viewport);
renderer->setScaleFactor(scaleFactor);
+ if (!renderer->setDeviceType(deviceType)) {
+ gLogger.logError("Invalid deviceType.\n");
+ PRINT_USAGE_AND_EXIT;
+ }
benchmark->setRenderer(renderer);
benchmark->setRepeats(repeats);
- benchmark->setDeviceType(deviceType);
benchmark->setLogger(&gLogger);
// Report current settings:
gLogger.logProgress(commandLine);