Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(579)

Side by Side Diff: bench/benchmain.cpp

Issue 319043005: Support using OpenGL ES context on desktop (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | dm/DM.cpp » ('j') | dm/DM.cpp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "BenchTimer.h" 8 #include "BenchTimer.h"
9 #include "ResultsWriter.h" 9 #include "ResultsWriter.h"
10 #include "SkBenchLogger.h" 10 #include "SkBenchLogger.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 kDeferredSilent_BenchMode, 42 kDeferredSilent_BenchMode,
43 kRecord_BenchMode, 43 kRecord_BenchMode,
44 kPictureRecord_BenchMode 44 kPictureRecord_BenchMode
45 }; 45 };
46 const char* BenchMode_Name[] = { 46 const char* BenchMode_Name[] = {
47 "normal", "deferred", "deferredSilent", "record", "picturerecord" 47 "normal", "deferred", "deferredSilent", "record", "picturerecord"
48 }; 48 };
49 49
50 static const char kDefaultsConfigStr[] = "defaults"; 50 static const char kDefaultsConfigStr[] = "defaults";
51 51
52 #if SK_SUPPORT_GPU
53 static const char kGpuApiNameGL[] = "gl";
54 static const char kGpuApiNameGLES[] = "gles";
55 #endif
56
52 /////////////////////////////////////////////////////////////////////////////// 57 ///////////////////////////////////////////////////////////////////////////////
53 58
54 class Iter { 59 class Iter {
55 public: 60 public:
56 Iter() : fBenches(BenchRegistry::Head()), fGMs(skiagm::GMRegistry::Head()) { } 61 Iter() : fBenches(BenchRegistry::Head()), fGMs(skiagm::GMRegistry::Head()) { }
57 62
58 SkBenchmark* next() { 63 SkBenchmark* next() {
59 if (fBenches) { 64 if (fBenches) {
60 BenchRegistry::Factory f = fBenches->factory(); 65 BenchRegistry::Factory f = fBenches->factory();
61 fBenches = fBenches->next(); 66 fBenches = fBenches->next();
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 236
232 DEFINE_bool(rotate, false, "Rotate canvas before bench run?"); 237 DEFINE_bool(rotate, false, "Rotate canvas before bench run?");
233 DEFINE_bool(scale, false, "Scale canvas before bench run?"); 238 DEFINE_bool(scale, false, "Scale canvas before bench run?");
234 DEFINE_bool(clip, false, "Clip canvas before bench run?"); 239 DEFINE_bool(clip, false, "Clip canvas before bench run?");
235 240
236 DEFINE_bool(forceAA, true, "Force anti-aliasing?"); 241 DEFINE_bool(forceAA, true, "Force anti-aliasing?");
237 DEFINE_bool(forceFilter, false, "Force bitmap filtering?"); 242 DEFINE_bool(forceFilter, false, "Force bitmap filtering?");
238 DEFINE_string(forceDither, "default", "Force dithering: true, false, or default? "); 243 DEFINE_string(forceDither, "default", "Force dithering: true, false, or default? ");
239 DEFINE_bool(forceBlend, false, "Force alpha blending?"); 244 DEFINE_bool(forceBlend, false, "Force alpha blending?");
240 245
246 DEFINE_string(forceGpuApi, "", "Force use of specific gpu API. Using \"gl\" "
247 "forces OpenGL API. Using \"gles\" forces OpenGL ES API. "
248 "Defaults to empty string, which selects the API native to the "
249 "system.");
241 DEFINE_int32(gpuCacheBytes, -1, "GPU cache size limit in bytes. 0 to disable ca che."); 250 DEFINE_int32(gpuCacheBytes, -1, "GPU cache size limit in bytes. 0 to disable ca che.");
242 DEFINE_int32(gpuCacheCount, -1, "GPU cache size limit in object count. 0 to dis able cache."); 251 DEFINE_int32(gpuCacheCount, -1, "GPU cache size limit in object count. 0 to dis able cache.");
243 252
244 DEFINE_bool2(leaks, l, false, "show leaked ref cnt'd objects."); 253 DEFINE_bool2(leaks, l, false, "show leaked ref cnt'd objects.");
245 DEFINE_string(match, "", "[~][^]substring[$] [...] of test name to run.\n" 254 DEFINE_string(match, "", "[~][^]substring[$] [...] of test name to run.\n"
246 "Multiple matches may be separated by spaces.\n" 255 "Multiple matches may be separated by spaces.\n"
247 "~ causes a matching test to always be skipped\n" 256 "~ causes a matching test to always be skipped\n"
248 "^ requires the start of the test to match\n" 257 "^ requires the start of the test to match\n"
249 "$ requires the end of the test to match\n" 258 "$ requires the end of the test to match\n"
250 "^ and $ requires an exact match\n" 259 "^ and $ requires an exact match\n"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 --i; 369 --i;
361 } 370 }
362 } 371 }
363 } 372 }
364 // Set the resource path. 373 // Set the resource path.
365 if (!FLAGS_resourcePath.isEmpty()) { 374 if (!FLAGS_resourcePath.isEmpty()) {
366 SkBenchmark::SetResourcePath(FLAGS_resourcePath[0]); 375 SkBenchmark::SetResourcePath(FLAGS_resourcePath[0]);
367 } 376 }
368 377
369 #if SK_SUPPORT_GPU 378 #if SK_SUPPORT_GPU
379 GrGLStandard forcedGpuApi = kNone_GrGLStandard;
380 if (1 == FLAGS_forceGpuApi.count()) {
381 if (strcmp(FLAGS_forceGpuApi[0], kGpuApiNameGL) == 0) {
382 forcedGpuApi = kGL_GrGLStandard;
383 } else if (strcmp(FLAGS_forceGpuApi[0], kGpuApiNameGLES) == 0) {
384 forcedGpuApi = kGLES_GrGLStandard;
385 }
386 }
387
370 for (int i = 0; i < configs.count(); ++i) { 388 for (int i = 0; i < configs.count(); ++i) {
371 const Config& config = gConfigs[configs[i]]; 389 const Config& config = gConfigs[configs[i]];
372 390
373 if (SkBenchmark::kGPU_Backend == config.backend) { 391 if (SkBenchmark::kGPU_Backend == config.backend) {
374 GrContext* context = gContextFactory.get(config.contextType); 392 GrContext* context = gContextFactory.get(config.contextType, forcedG puApi);
375 if (NULL == context) { 393 if (NULL == context) {
376 SkDebugf("GrContext could not be created for config %s. Config w ill be skipped.\n", 394 SkDebugf("GrContext could not be created for config %s. Config w ill be skipped.\n",
377 config.name); 395 config.name);
378 configs.remove(i); 396 configs.remove(i);
379 --i; 397 --i;
380 continue; 398 continue;
381 } 399 }
382 if (config.sampleCount > context->getMaxSampleCount()){ 400 if (config.sampleCount > context->getMaxSampleCount()){
383 SkDebugf( 401 SkDebugf(
384 "Sample count (%d) for config %s is not supported. Config wi ll be skipped.\n", 402 "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
424 writer.option("build", "RELEASE"); 442 writer.option("build", "RELEASE");
425 #endif 443 #endif
426 444
427 // Set texture cache limits if non-default. 445 // Set texture cache limits if non-default.
428 for (size_t i = 0; i < SK_ARRAY_COUNT(gConfigs); ++i) { 446 for (size_t i = 0; i < SK_ARRAY_COUNT(gConfigs); ++i) {
429 #if SK_SUPPORT_GPU 447 #if SK_SUPPORT_GPU
430 const Config& config = gConfigs[i]; 448 const Config& config = gConfigs[i];
431 if (SkBenchmark::kGPU_Backend != config.backend) { 449 if (SkBenchmark::kGPU_Backend != config.backend) {
432 continue; 450 continue;
433 } 451 }
434 GrContext* context = gContextFactory.get(config.contextType); 452 GrContext* context = gContextFactory.get(config.contextType, forcedGpuAp i);
435 if (NULL == context) { 453 if (NULL == context) {
436 continue; 454 continue;
437 } 455 }
438 456
439 size_t bytes; 457 size_t bytes;
440 int count; 458 int count;
441 context->getResourceCacheLimits(&count, &bytes); 459 context->getResourceCacheLimits(&count, &bytes);
442 if (-1 != FLAGS_gpuCacheBytes) { 460 if (-1 != FLAGS_gpuCacheBytes) {
443 bytes = static_cast<size_t>(FLAGS_gpuCacheBytes); 461 bytes = static_cast<size_t>(FLAGS_gpuCacheBytes);
444 } 462 }
(...skipping 25 matching lines...) Expand all
470 const Config& config = gConfigs[configIndex]; 488 const Config& config = gConfigs[configIndex];
471 489
472 if (!bench->isSuitableFor(config.backend)) { 490 if (!bench->isSuitableFor(config.backend)) {
473 continue; 491 continue;
474 } 492 }
475 493
476 GrContext* context = NULL; 494 GrContext* context = NULL;
477 #if SK_SUPPORT_GPU 495 #if SK_SUPPORT_GPU
478 SkGLContextHelper* glContext = NULL; 496 SkGLContextHelper* glContext = NULL;
479 if (SkBenchmark::kGPU_Backend == config.backend) { 497 if (SkBenchmark::kGPU_Backend == config.backend) {
480 context = gContextFactory.get(config.contextType); 498 context = gContextFactory.get(config.contextType, forcedGpuApi);
481 if (NULL == context) { 499 if (NULL == context) {
482 continue; 500 continue;
483 } 501 }
484 glContext = gContextFactory.getGLContext(config.contextType); 502 glContext = gContextFactory.getGLContext(config.contextType);
485 } 503 }
486 #endif 504 #endif
487 505
488 SkAutoTUnref<SkCanvas> canvas; 506 SkAutoTUnref<SkCanvas> canvas;
489 SkAutoTUnref<SkPicture> recordFrom; 507 SkAutoTUnref<SkPicture> recordFrom;
490 SkPictureRecorder recorderTo; 508 SkPictureRecorder recorderTo;
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 gContextFactory.destroyContexts(); 721 gContextFactory.destroyContexts();
704 #endif 722 #endif
705 return 0; 723 return 0;
706 } 724 }
707 725
708 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) 726 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
709 int main(int argc, char * const argv[]) { 727 int main(int argc, char * const argv[]) {
710 return tool_main(argc, (char**) argv); 728 return tool_main(argc, (char**) argv);
711 } 729 }
712 #endif 730 #endif
OLDNEW
« no previous file with comments | « no previous file | dm/DM.cpp » ('j') | dm/DM.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698