| Index: bench/benchmain.cpp
 | 
| diff --git a/bench/benchmain.cpp b/bench/benchmain.cpp
 | 
| index e097fe094771fe44eaa8609dd31f3108f29dcd63..3a9f0c2a465c1b230ce45148a1451d0d45502a64 100644
 | 
| --- a/bench/benchmain.cpp
 | 
| +++ b/bench/benchmain.cpp
 | 
| @@ -48,6 +48,11 @@ const char* BenchMode_Name[] = {
 | 
|  
 | 
|  static const char kDefaultsConfigStr[] = "defaults";
 | 
|  
 | 
| +#if SK_SUPPORT_GPU
 | 
| +static const char kGpuAPINameGL[] = "gl";
 | 
| +static const char kGpuAPINameGLES[] = "gles";
 | 
| +#endif
 | 
| +
 | 
|  ///////////////////////////////////////////////////////////////////////////////
 | 
|  
 | 
|  class Iter {
 | 
| @@ -225,6 +230,10 @@ DEFINE_bool(forceFilter,    false,    "Force bitmap filtering?");
 | 
|  DEFINE_string(forceDither, "default", "Force dithering: true, false, or default?");
 | 
|  DEFINE_bool(forceBlend,     false,    "Force alpha blending?");
 | 
|  
 | 
| +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.");
 | 
|  DEFINE_int32(gpuCacheBytes, -1, "GPU cache size limit in bytes.  0 to disable cache.");
 | 
|  DEFINE_int32(gpuCacheCount, -1, "GPU cache size limit in object count.  0 to disable cache.");
 | 
|  
 | 
| @@ -346,11 +355,24 @@ int tool_main(int argc, char** argv) {
 | 
|      }
 | 
|  
 | 
|  #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 {
 | 
| +            SkDebugf("Selected gpu API could not be used. Using the default.\n");
 | 
| +        }
 | 
| +    } else if (FLAGS_gpuAPI.count() > 1)  {
 | 
| +        SkDebugf("Selected gpu API could not be used. Using the default.\n");
 | 
| +    }
 | 
| +
 | 
|      for (int i = 0; i < configs.count(); ++i) {
 | 
|          const Config& config = gConfigs[configs[i]];
 | 
|  
 | 
|          if (Benchmark::kGPU_Backend == config.backend) {
 | 
| -            GrContext* context = gContextFactory.get(config.contextType);
 | 
| +            GrContext* context = gContextFactory.get(config.contextType, gpuAPI);
 | 
|              if (NULL == context) {
 | 
|                  SkDebugf("GrContext could not be created for config %s. Config will be skipped.\n",
 | 
|                      config.name);
 | 
| @@ -410,7 +432,7 @@ int tool_main(int argc, char** argv) {
 | 
|          if (Benchmark::kGPU_Backend != config.backend) {
 | 
|              continue;
 | 
|          }
 | 
| -        GrContext* context = gContextFactory.get(config.contextType);
 | 
| +        GrContext* context = gContextFactory.get(config.contextType, gpuAPI);
 | 
|          if (NULL == context) {
 | 
|              continue;
 | 
|          }
 | 
| @@ -456,7 +478,7 @@ int tool_main(int argc, char** argv) {
 | 
|  #if SK_SUPPORT_GPU
 | 
|              SkGLContextHelper* glContext = NULL;
 | 
|              if (Benchmark::kGPU_Backend == config.backend) {
 | 
| -                context = gContextFactory.get(config.contextType);
 | 
| +                context = gContextFactory.get(config.contextType, gpuAPI);
 | 
|                  if (NULL == context) {
 | 
|                      continue;
 | 
|                  }
 | 
| 
 |