| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright 2011 Google Inc. | 2  * Copyright 2011 Google Inc. | 
| 3  * | 3  * | 
| 4  * Use of this source code is governed by a BSD-style license that can be | 4  * Use of this source code is governed by a BSD-style license that can be | 
| 5  * found in the LICENSE file. | 5  * found in the LICENSE file. | 
| 6  */ | 6  */ | 
| 7 | 7 | 
| 8 #include "BenchLogger.h" | 8 #include "BenchLogger.h" | 
| 9 #include "Benchmark.h" | 9 #include "Benchmark.h" | 
| 10 #include "CrashHandler.h" | 10 #include "CrashHandler.h" | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
| 41     kDeferredSilent_BenchMode, | 41     kDeferredSilent_BenchMode, | 
| 42     kRecord_BenchMode, | 42     kRecord_BenchMode, | 
| 43     kPictureRecord_BenchMode | 43     kPictureRecord_BenchMode | 
| 44 }; | 44 }; | 
| 45 const char* BenchMode_Name[] = { | 45 const char* BenchMode_Name[] = { | 
| 46     "normal", "deferred", "deferredSilent", "record", "picturerecord" | 46     "normal", "deferred", "deferredSilent", "record", "picturerecord" | 
| 47 }; | 47 }; | 
| 48 | 48 | 
| 49 static const char kDefaultsConfigStr[] = "defaults"; | 49 static const char kDefaultsConfigStr[] = "defaults"; | 
| 50 | 50 | 
|  | 51 #if SK_SUPPORT_GPU | 
|  | 52 static const char kGpuAPINameGL[] = "gl"; | 
|  | 53 static const char kGpuAPINameGLES[] = "gles"; | 
|  | 54 #endif | 
|  | 55 | 
| 51 /////////////////////////////////////////////////////////////////////////////// | 56 /////////////////////////////////////////////////////////////////////////////// | 
| 52 | 57 | 
| 53 class Iter { | 58 class Iter { | 
| 54 public: | 59 public: | 
| 55     Iter() : fBenches(BenchRegistry::Head()), fGMs(skiagm::GMRegistry::Head()) {
     } | 60     Iter() : fBenches(BenchRegistry::Head()), fGMs(skiagm::GMRegistry::Head()) {
     } | 
| 56 | 61 | 
| 57     Benchmark* next() { | 62     Benchmark* next() { | 
| 58         if (fBenches) { | 63         if (fBenches) { | 
| 59             BenchRegistry::Factory f = fBenches->factory(); | 64             BenchRegistry::Factory f = fBenches->factory(); | 
| 60             fBenches = fBenches->next(); | 65             fBenches = fBenches->next(); | 
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 218 | 223 | 
| 219 DEFINE_bool(rotate, false,  "Rotate canvas before bench run?"); | 224 DEFINE_bool(rotate, false,  "Rotate canvas before bench run?"); | 
| 220 DEFINE_bool(scale,  false,  "Scale canvas before bench run?"); | 225 DEFINE_bool(scale,  false,  "Scale canvas before bench run?"); | 
| 221 DEFINE_bool(clip,   false,  "Clip canvas before bench run?"); | 226 DEFINE_bool(clip,   false,  "Clip canvas before bench run?"); | 
| 222 | 227 | 
| 223 DEFINE_bool(forceAA,        true,     "Force anti-aliasing?"); | 228 DEFINE_bool(forceAA,        true,     "Force anti-aliasing?"); | 
| 224 DEFINE_bool(forceFilter,    false,    "Force bitmap filtering?"); | 229 DEFINE_bool(forceFilter,    false,    "Force bitmap filtering?"); | 
| 225 DEFINE_string(forceDither, "default", "Force dithering: true, false, or default?
     "); | 230 DEFINE_string(forceDither, "default", "Force dithering: true, false, or default?
     "); | 
| 226 DEFINE_bool(forceBlend,     false,    "Force alpha blending?"); | 231 DEFINE_bool(forceBlend,     false,    "Force alpha blending?"); | 
| 227 | 232 | 
|  | 233 DEFINE_string(gpuAPI, "", "Force use of specific gpu API.  Using \"gl\" " | 
|  | 234               "forces OpenGL API. Using \"gles\" forces OpenGL ES API. " | 
|  | 235               "Defaults to empty string, which selects the API native to the " | 
|  | 236               "system."); | 
| 228 DEFINE_int32(gpuCacheBytes, -1, "GPU cache size limit in bytes.  0 to disable ca
     che."); | 237 DEFINE_int32(gpuCacheBytes, -1, "GPU cache size limit in bytes.  0 to disable ca
     che."); | 
| 229 DEFINE_int32(gpuCacheCount, -1, "GPU cache size limit in object count.  0 to dis
     able cache."); | 238 DEFINE_int32(gpuCacheCount, -1, "GPU cache size limit in object count.  0 to dis
     able cache."); | 
| 230 | 239 | 
| 231 DEFINE_bool2(leaks, l, false, "show leaked ref cnt'd objects."); | 240 DEFINE_bool2(leaks, l, false, "show leaked ref cnt'd objects."); | 
| 232 DEFINE_string(match, "",  "[~][^]substring[$] [...] of test name to run.\n" | 241 DEFINE_string(match, "",  "[~][^]substring[$] [...] of test name to run.\n" | 
| 233                           "Multiple matches may be separated by spaces.\n" | 242                           "Multiple matches may be separated by spaces.\n" | 
| 234                           "~ causes a matching test to always be skipped\n" | 243                           "~ causes a matching test to always be skipped\n" | 
| 235                           "^ requires the start of the test to match\n" | 244                           "^ requires the start of the test to match\n" | 
| 236                           "$ requires the end of the test to match\n" | 245                           "$ requires the end of the test to match\n" | 
| 237                           "^ and $ requires an exact match\n" | 246                           "^ and $ requires an exact match\n" | 
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 339         for (int i = 0; i < configs.count(); ++i) { | 348         for (int i = 0; i < configs.count(); ++i) { | 
| 340             const Config& config = gConfigs[configs[i]]; | 349             const Config& config = gConfigs[configs[i]]; | 
| 341             if (Benchmark::kNonRendering_Backend == config.backend) { | 350             if (Benchmark::kNonRendering_Backend == config.backend) { | 
| 342                 configs.remove(i, 1); | 351                 configs.remove(i, 1); | 
| 343                 --i; | 352                 --i; | 
| 344             } | 353             } | 
| 345         } | 354         } | 
| 346     } | 355     } | 
| 347 | 356 | 
| 348 #if SK_SUPPORT_GPU | 357 #if SK_SUPPORT_GPU | 
|  | 358     GrGLStandard gpuAPI = kNone_GrGLStandard; | 
|  | 359     if (1 == FLAGS_gpuAPI.count()) { | 
|  | 360         if (FLAGS_gpuAPI.contains(kGpuAPINameGL)) { | 
|  | 361             gpuAPI = kGL_GrGLStandard; | 
|  | 362         } else if (FLAGS_gpuAPI.contains(kGpuAPINameGLES)) { | 
|  | 363             gpuAPI = kGLES_GrGLStandard; | 
|  | 364         } else { | 
|  | 365             SkDebugf("Selected gpu API could not be used. Using the default.\n")
     ; | 
|  | 366         } | 
|  | 367     } else if (FLAGS_gpuAPI.count() > 1)  { | 
|  | 368         SkDebugf("Selected gpu API could not be used. Using the default.\n"); | 
|  | 369     } | 
|  | 370 | 
| 349     for (int i = 0; i < configs.count(); ++i) { | 371     for (int i = 0; i < configs.count(); ++i) { | 
| 350         const Config& config = gConfigs[configs[i]]; | 372         const Config& config = gConfigs[configs[i]]; | 
| 351 | 373 | 
| 352         if (Benchmark::kGPU_Backend == config.backend) { | 374         if (Benchmark::kGPU_Backend == config.backend) { | 
| 353             GrContext* context = gContextFactory.get(config.contextType); | 375             GrContext* context = gContextFactory.get(config.contextType, gpuAPI)
     ; | 
| 354             if (NULL == context) { | 376             if (NULL == context) { | 
| 355                 SkDebugf("GrContext could not be created for config %s. Config w
     ill be skipped.\n", | 377                 SkDebugf("GrContext could not be created for config %s. Config w
     ill be skipped.\n", | 
| 356                     config.name); | 378                     config.name); | 
| 357                 configs.remove(i); | 379                 configs.remove(i); | 
| 358                 --i; | 380                 --i; | 
| 359                 continue; | 381                 continue; | 
| 360             } | 382             } | 
| 361             if (config.sampleCount > context->getMaxSampleCount()){ | 383             if (config.sampleCount > context->getMaxSampleCount()){ | 
| 362                 SkDebugf( | 384                 SkDebugf( | 
| 363                     "Sample count (%d) for config %s is not supported. Config wi
     ll be skipped.\n", | 385                     "Sample count (%d) for config %s is not supported. Config wi
     ll be skipped.\n", | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 403     writer.option("build", "RELEASE"); | 425     writer.option("build", "RELEASE"); | 
| 404 #endif | 426 #endif | 
| 405 | 427 | 
| 406     // Set texture cache limits if non-default. | 428     // Set texture cache limits if non-default. | 
| 407     for (size_t i = 0; i < SK_ARRAY_COUNT(gConfigs); ++i) { | 429     for (size_t i = 0; i < SK_ARRAY_COUNT(gConfigs); ++i) { | 
| 408 #if SK_SUPPORT_GPU | 430 #if SK_SUPPORT_GPU | 
| 409         const Config& config = gConfigs[i]; | 431         const Config& config = gConfigs[i]; | 
| 410         if (Benchmark::kGPU_Backend != config.backend) { | 432         if (Benchmark::kGPU_Backend != config.backend) { | 
| 411             continue; | 433             continue; | 
| 412         } | 434         } | 
| 413         GrContext* context = gContextFactory.get(config.contextType); | 435         GrContext* context = gContextFactory.get(config.contextType, gpuAPI); | 
| 414         if (NULL == context) { | 436         if (NULL == context) { | 
| 415             continue; | 437             continue; | 
| 416         } | 438         } | 
| 417 | 439 | 
| 418         size_t bytes; | 440         size_t bytes; | 
| 419         int count; | 441         int count; | 
| 420         context->getResourceCacheLimits(&count, &bytes); | 442         context->getResourceCacheLimits(&count, &bytes); | 
| 421         if (-1 != FLAGS_gpuCacheBytes) { | 443         if (-1 != FLAGS_gpuCacheBytes) { | 
| 422             bytes = static_cast<size_t>(FLAGS_gpuCacheBytes); | 444             bytes = static_cast<size_t>(FLAGS_gpuCacheBytes); | 
| 423         } | 445         } | 
| (...skipping 25 matching lines...) Expand all  Loading... | 
| 449             const Config& config = gConfigs[configIndex]; | 471             const Config& config = gConfigs[configIndex]; | 
| 450 | 472 | 
| 451             if (!bench->isSuitableFor(config.backend)) { | 473             if (!bench->isSuitableFor(config.backend)) { | 
| 452                 continue; | 474                 continue; | 
| 453             } | 475             } | 
| 454 | 476 | 
| 455             GrContext* context = NULL; | 477             GrContext* context = NULL; | 
| 456 #if SK_SUPPORT_GPU | 478 #if SK_SUPPORT_GPU | 
| 457             SkGLContextHelper* glContext = NULL; | 479             SkGLContextHelper* glContext = NULL; | 
| 458             if (Benchmark::kGPU_Backend == config.backend) { | 480             if (Benchmark::kGPU_Backend == config.backend) { | 
| 459                 context = gContextFactory.get(config.contextType); | 481                 context = gContextFactory.get(config.contextType, gpuAPI); | 
| 460                 if (NULL == context) { | 482                 if (NULL == context) { | 
| 461                     continue; | 483                     continue; | 
| 462                 } | 484                 } | 
| 463                 glContext = gContextFactory.getGLContext(config.contextType); | 485                 glContext = gContextFactory.getGLContext(config.contextType); | 
| 464             } | 486             } | 
| 465 #endif | 487 #endif | 
| 466 | 488 | 
| 467             SkAutoTUnref<SkCanvas> canvas; | 489             SkAutoTUnref<SkCanvas> canvas; | 
| 468             SkAutoTUnref<SkPicture> recordFrom; | 490             SkAutoTUnref<SkPicture> recordFrom; | 
| 469             SkPictureRecorder recorderTo; | 491             SkPictureRecorder recorderTo; | 
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 675     gContextFactory.destroyContexts(); | 697     gContextFactory.destroyContexts(); | 
| 676 #endif | 698 #endif | 
| 677     return 0; | 699     return 0; | 
| 678 } | 700 } | 
| 679 | 701 | 
| 680 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) | 702 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) | 
| 681 int main(int argc, char * const argv[]) { | 703 int main(int argc, char * const argv[]) { | 
| 682     return tool_main(argc, (char**) argv); | 704     return tool_main(argc, (char**) argv); | 
| 683 } | 705 } | 
| 684 #endif | 706 #endif | 
| OLD | NEW | 
|---|