| Index: tools/PictureRenderingFlags.cpp
 | 
| diff --git a/tools/PictureRenderingFlags.cpp b/tools/PictureRenderingFlags.cpp
 | 
| index 3e7821819f4719f28fe59a13016d7aa1b4760252..ccec158f95e8b9e85683027936b5ad65f02a52ba 100644
 | 
| --- a/tools/PictureRenderingFlags.cpp
 | 
| +++ b/tools/PictureRenderingFlags.cpp
 | 
| @@ -26,6 +26,8 @@ DEFINE_string(bbh, "none", "bbhType [width height]: Set the bounding box hierarc
 | 
|  
 | 
|  
 | 
|  #if SK_SUPPORT_GPU
 | 
| +static const char kGpuAPINameGL[] = "gl";
 | 
| +static const char kGpuAPINameGLES[] = "gles";
 | 
|  #define GPU_CONFIG_STRING "|gpu|msaa4|msaa16|nvprmsaa4|nvprmsaa16"
 | 
|  #else
 | 
|  #define GPU_CONFIG_STRING ""
 | 
| @@ -72,6 +74,12 @@ DEFINE_double(scale, 1, "Set the scale factor.");
 | 
|  DEFINE_string(tiles, "", "Used with --mode copyTile to specify number of tiles per larger tile "
 | 
|                "in the x and y directions.");
 | 
|  DEFINE_string(viewport, "", "width height: Set the viewport.");
 | 
| +#if SK_SUPPORT_GPU
 | 
| +DEFINE_string(gpuAPI, "", "Force use of specific gpu API.  Using \"gl\" "
 | 
| +              "forces OpenGL API. Using \"gles\" forces OpenGL ES API. "
 | 
| +              "Defaults to empty string, which selects the API native to the "
 | 
| +              "system.");
 | 
| +#endif
 | 
|  
 | 
|  sk_tools::PictureRenderer* parseRenderer(SkString& error, PictureTool tool) {
 | 
|      error.reset();
 | 
| @@ -244,6 +252,21 @@ sk_tools::PictureRenderer* parseRenderer(SkString& error, PictureTool tool) {
 | 
|      sk_tools::PictureRenderer::SkDeviceTypes deviceType =
 | 
|          sk_tools::PictureRenderer::kBitmap_DeviceType;
 | 
|  #if SK_SUPPORT_GPU
 | 
| +    GrGLStandard gpuAPI = kNone_GrGLStandard;
 | 
| +    if (1 == FLAGS_gpuAPI.count()) {
 | 
| +        if (FLAGS_gpuAPI.contains(kGpuAPINameGL)) {
 | 
| +            gpuAPI = kGL_GrGLStandard;
 | 
| +        } else if (FLAGS_gpuAPI.contains(kGpuAPINameGLES)) {
 | 
| +            gpuAPI = kGLES_GrGLStandard;
 | 
| +        } else {
 | 
| +            error.printf("--gpuAPI invalid api value.\n");
 | 
| +            return NULL;
 | 
| +        }
 | 
| +    } else if (FLAGS_gpuAPI.count() > 1) {
 | 
| +        error.printf("--gpuAPI invalid api value.\n");
 | 
| +        return NULL;
 | 
| +    }
 | 
| +
 | 
|      int sampleCount = 0;
 | 
|  #endif
 | 
|      if (FLAGS_config.count() > 0) {
 | 
| @@ -285,7 +308,14 @@ sk_tools::PictureRenderer* parseRenderer(SkString& error, PictureTool tool) {
 | 
|              error.printf("%s is not a valid mode for --config\n", FLAGS_config[0]);
 | 
|              return NULL;
 | 
|          }
 | 
| -        renderer->setDeviceType(deviceType);
 | 
| +#if SK_SUPPORT_GPU
 | 
| +        if (!renderer->setDeviceType(deviceType, gpuAPI)) {
 | 
| +#else
 | 
| +        if (!renderer->setDeviceType(deviceType)) {
 | 
| +#endif
 | 
| +            error.printf("Could not create backend for --config %s\n", FLAGS_config[0]);
 | 
| +            return NULL;
 | 
| +        }
 | 
|  #if SK_SUPPORT_GPU
 | 
|          renderer->setSampleCount(sampleCount);
 | 
|  #endif
 | 
| 
 |