| Index: bench/benchmain.cpp
|
| ===================================================================
|
| --- bench/benchmain.cpp (revision 8174)
|
| +++ bench/benchmain.cpp (working copy)
|
| @@ -193,7 +193,7 @@
|
| };
|
|
|
| static SkDevice* make_device(SkBitmap::Config config, const SkIPoint& size,
|
| - Backend backend, GrContext* context) {
|
| + Backend backend, int sampleCount, GrContext* context) {
|
| SkDevice* device = NULL;
|
| SkBitmap bitmap;
|
| bitmap.setConfig(config, size.fX, size.fY);
|
| @@ -211,6 +211,7 @@
|
| desc.fFlags = kRenderTarget_GrTextureFlagBit;
|
| desc.fWidth = size.fX;
|
| desc.fHeight = size.fY;
|
| + desc.fSampleCnt = sampleCount;
|
| SkAutoTUnref<GrTexture> texture(context->createUncachedTexture(desc, NULL, 0));
|
| if (!texture) {
|
| return NULL;
|
| @@ -238,21 +239,25 @@
|
| static const struct {
|
| SkBitmap::Config fConfig;
|
| const char* fName;
|
| + int fSampleCnt;
|
| Backend fBackend;
|
| GLContextType fContextType;
|
| + bool fRunByDefault;
|
| } gConfigs[] = {
|
| - { SkBitmap::kNo_Config, "NONRENDERING", kNonRendering_Backend, kDontCareGLCtxType },
|
| - { SkBitmap::kARGB_8888_Config, "8888", kRaster_Backend, kDontCareGLCtxType },
|
| - { SkBitmap::kRGB_565_Config, "565", kRaster_Backend, kDontCareGLCtxType },
|
| + { SkBitmap::kNo_Config, "NONRENDERING", 0, kNonRendering_Backend, kDontCareGLCtxType, true },
|
| + { SkBitmap::kARGB_8888_Config, "8888", 0, kRaster_Backend, kDontCareGLCtxType, true },
|
| + { SkBitmap::kRGB_565_Config, "565", 0, kRaster_Backend, kDontCareGLCtxType, true },
|
| #if SK_SUPPORT_GPU
|
| - { SkBitmap::kARGB_8888_Config, "GPU", kGPU_Backend, GrContextFactory::kNative_GLContextType },
|
| + { SkBitmap::kARGB_8888_Config, "GPU", 0, kGPU_Backend, GrContextFactory::kNative_GLContextType, true },
|
| + { SkBitmap::kARGB_8888_Config, "MSAA4", 4, kGPU_Backend, GrContextFactory::kNative_GLContextType, false },
|
| + { SkBitmap::kARGB_8888_Config, "MSAA16", 16, kGPU_Backend, GrContextFactory::kNative_GLContextType, false },
|
| #if SK_ANGLE
|
| - { SkBitmap::kARGB_8888_Config, "ANGLE", kGPU_Backend, GrContextFactory::kANGLE_GLContextType },
|
| + { SkBitmap::kARGB_8888_Config, "ANGLE", 0, kGPU_Backend, GrContextFactory::kANGLE_GLContextType, true },
|
| #endif // SK_ANGLE
|
| #ifdef SK_DEBUG
|
| - { SkBitmap::kARGB_8888_Config, "Debug", kGPU_Backend, GrContextFactory::kDebug_GLContextType },
|
| + { SkBitmap::kARGB_8888_Config, "Debug", 0, kGPU_Backend, GrContextFactory::kDebug_GLContextType, GR_DEBUG },
|
| #endif // SK_DEBUG
|
| - { SkBitmap::kARGB_8888_Config, "NULLGPU", kGPU_Backend, GrContextFactory::kNull_GLContextType },
|
| + { SkBitmap::kARGB_8888_Config, "NULLGPU", 0, kGPU_Backend, GrContextFactory::kNull_GLContextType, true },
|
| #endif // SK_SUPPORT_GPU
|
| };
|
|
|
| @@ -280,6 +285,12 @@
|
| }
|
|
|
| static void help() {
|
| + SkString configsStr;
|
| + static const size_t kConfigCount = SK_ARRAY_COUNT(gConfigs);
|
| + for (size_t i = 0; i < kConfigCount; ++i) {
|
| + configsStr.appendf("%s%s", gConfigs[i].fName, ((i == kConfigCount - 1) ? "" : "|"));
|
| + }
|
| +
|
| SkDebugf("Usage: bench [-o outDir] [--repeat nr] [--logPerIter] "
|
| "[--timers [wcgWC]*] [--rotate]\n"
|
| " [--scale] [--clip] [--min] [--forceAA 1|0] [--forceFilter 1|0]\n"
|
| @@ -290,8 +301,9 @@
|
| "\n"
|
| " [--strokeWidth width] [--match name]\n"
|
| " [--mode normal|deferred|deferredSilent|record|picturerecord]\n"
|
| - " [--config 8888|565|GPU|ANGLE|NULLGPU] [-Dfoo bar] [--logFile filename]\n"
|
| - " [-h|--help]");
|
| + " [--config ");
|
| + SkDebugf("%s]\n", configsStr.c_str());
|
| + SkDebugf(" [-Dfoo bar] [--logFile filename] [-h|--help]");
|
| SkDebugf("\n\n");
|
| SkDebugf(" -o outDir : Image of each bench will be put in outDir.\n");
|
| SkDebugf(" --repeat nr : Each bench repeats for nr times.\n");
|
| @@ -327,12 +339,8 @@
|
| " picturerecord, Benchmark the time to do record from a \n"
|
| " SkPicture to a SkPicture.\n");
|
| SkDebugf(" --logFile filename : destination for writing log output, in addition to stdout.\n");
|
| - SkDebugf(" --config ");
|
| - static const size_t kConfigCount = SK_ARRAY_COUNT(gConfigs);
|
| - for (size_t i = 0; i < kConfigCount; ++i) {
|
| - SkDebugf("%s%s", gConfigs[i].fName, ((i == kConfigCount - 1) ? "" : "|"));
|
| - }
|
| - SkDebugf(" : Run bench in corresponding config mode.\n");
|
| + SkDebugf(" --config %s:\n", configsStr.c_str());
|
| + SkDebugf(" Run bench in corresponding config mode.\n");
|
| SkDebugf(" -Dfoo bar : Add extra definition to bench.\n");
|
| SkDebugf(" -h|--help : Show this help message.\n");
|
| }
|
| @@ -379,6 +387,7 @@
|
| SkBitmap::Config outConfig = SkBitmap::kNo_Config;
|
| const char* configName = "";
|
| Backend backend = kRaster_Backend; // for warning
|
| + int sampleCount = 0;
|
| SkTDArray<int> configs;
|
| bool userConfig = false;
|
|
|
| @@ -588,9 +597,11 @@
|
| normalTimeFormat.set("%6.4f");
|
| }
|
| if (!userConfig) {
|
| - // if no config is specified by user, we add them all.
|
| + // if no config is specified by user, add the default configs
|
| for (unsigned int i = 0; i < SK_ARRAY_COUNT(gConfigs); ++i) {
|
| - *configs.append() = i;
|
| + if (gConfigs[i].fRunByDefault) {
|
| + *configs.append() = i;
|
| + }
|
| }
|
| }
|
| if (kNormal_benchModes != benchMode) {
|
| @@ -604,6 +615,34 @@
|
| }
|
| }
|
|
|
| +#if SK_SUPPORT_GPU
|
| + for (int i = 0; i < configs.count(); ++i) {
|
| + int configIdx = configs[i];
|
| +
|
| + if (kGPU_Backend == gConfigs[configIdx].fBackend && gConfigs[configIdx].fSampleCnt > 0) {
|
| + GrContext* context = gContextFactory.get(gConfigs[configIdx].fContextType);
|
| + if (NULL == context) {
|
| + SkString error;
|
| + error.printf("Error creating GrContext for config %s. Config will be skipped.\n",
|
| + gConfigs[configIdx].fName);
|
| + logger.logError(error.c_str());
|
| + configs.remove(i);
|
| + --i;
|
| + continue;
|
| + }
|
| + if (gConfigs[configIdx].fSampleCnt > context->getMaxSampleCount()){
|
| + SkString error;
|
| + error.printf("Sample count (%d) for config %s is unsupported. Config will be skipped.\n",
|
| + gConfigs[configIdx].fSampleCnt, gConfigs[configIdx].fName);
|
| + logger.logError(error.c_str());
|
| + configs.remove(i);
|
| + --i;
|
| + continue;
|
| + }
|
| + }
|
| + }
|
| +#endif
|
| +
|
| // report our current settings
|
| {
|
| SkString str;
|
| @@ -728,6 +767,7 @@
|
| outConfig = gConfigs[configIndex].fConfig;
|
| configName = gConfigs[configIndex].fName;
|
| backend = gConfigs[configIndex].fBackend;
|
| + sampleCount = gConfigs[configIndex].fSampleCnt;
|
| GrContext* context = NULL;
|
| BenchTimer* timer = timers[configIndex];
|
|
|
| @@ -747,7 +787,7 @@
|
| SkPicture pictureRecordTo;
|
|
|
| if (kNonRendering_Backend != backend) {
|
| - device = make_device(outConfig, dim, backend, context);
|
| + device = make_device(outConfig, dim, backend, sampleCount, context);
|
|
|
| switch(benchMode) {
|
| case kDeferredSilent_benchModes:
|
|
|