Support mesa config in render_pictures.
R=epoger@google.com, robertphillips@google.com
Review URL: https://codereview.chromium.org/125083004
git-svn-id: http://skia.googlecode.com/svn/trunk@12916 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/PictureRenderer.cpp b/tools/PictureRenderer.cpp
index de7e641..b61288a 100644
--- a/tools/PictureRenderer.cpp
+++ b/tools/PictureRenderer.cpp
@@ -146,6 +146,10 @@
case kAngle_DeviceType:
// fall through
#endif
+#if SK_MESA
+ case kMesa_DeviceType:
+ // fall through
+#endif
case kGPU_DeviceType: {
SkAutoTUnref<GrSurface> target;
if (fGrContext) {
diff --git a/tools/PictureRenderer.h b/tools/PictureRenderer.h
index e524aa1..c4b97f2 100644
--- a/tools/PictureRenderer.h
+++ b/tools/PictureRenderer.h
@@ -69,6 +69,9 @@
#if SK_ANGLE
kAngle_DeviceType,
#endif
+#if SK_MESA
+ kMesa_DeviceType,
+#endif
kBitmap_DeviceType,
#if SK_SUPPORT_GPU
kGPU_DeviceType,
@@ -177,6 +180,11 @@
glContextType = GrContextFactory::kANGLE_GLContextType;
break;
#endif
+#if SK_MESA
+ case kMesa_DeviceType:
+ glContextType = GrContextFactory::kMESA_GLContextType;
+ break;
+#endif
#endif
default:
// Invalid device type.
@@ -256,6 +264,11 @@
config.append("_angle");
break;
#endif
+#if SK_MESA
+ case kMesa_DeviceType:
+ config.append("_mesa");
+ break;
+#endif
default:
// Assume that no extra info means bitmap.
break;
@@ -272,6 +285,10 @@
// fall through
#if SK_ANGLE
case kAngle_DeviceType:
+ // fall through
+#endif
+#if SK_MESA
+ case kMesa_DeviceType:
#endif
return true;
default:
@@ -291,6 +308,11 @@
glContextType = GrContextFactory::kANGLE_GLContextType;
break;
#endif
+#if SK_MESA
+ case kMesa_DeviceType:
+ glContextType = GrContextFactory::kMESA_GLContextType;
+ break;
+#endif
default:
return NULL;
}
diff --git a/tools/PictureRenderingFlags.cpp b/tools/PictureRenderingFlags.cpp
index 2aae77f..e1cc72f 100644
--- a/tools/PictureRenderingFlags.cpp
+++ b/tools/PictureRenderingFlags.cpp
@@ -25,14 +25,18 @@
"playbackCreation.");
// Although this config does not support all the same options as gm, the names should be kept
// consistent.
-#if SK_ANGLE
-// ANGLE assumes GPU
-DEFINE_string(config, "8888", "[8888|gpu|msaa4|msaa16|angle]: Use the corresponding config.");
-#elif SK_SUPPORT_GPU
-DEFINE_string(config, "8888", "[8888|gpu|msaa4|msaa16]: Use the corresponding config.");
-#else
-DEFINE_string(config, "8888", "[8888]: Use the corresponding config.");
+DEFINE_string(config, "8888", "["
+ "8888"
+#if SK_SUPPORT_GPU
+ "|gpu|msaa4|msaa16"
#endif
+#if SK_ANGLE
+ "|angle"
+#endif
+#if SK_MESA
+ "|mesa"
+#endif
+ "]: Use the corresponding config.");
DEFINE_bool(deferImageDecoding, false, "Defer decoding until drawing images. "
"Has no effect if the provided skp does not have its images encoded.");
@@ -285,6 +289,15 @@
}
}
#endif
+#if SK_MESA
+ else if (0 == strcmp(FLAGS_config[0], "mesa")) {
+ deviceType = sk_tools::PictureRenderer::kMesa_DeviceType;
+ if (FLAGS_multi > 1) {
+ error.printf("Mesa not compatible with multithreaded tiling.\n");
+ return NULL;
+ }
+ }
+#endif
#endif
else {
error.printf("%s is not a valid mode for --config\n", FLAGS_config[0]);