int tool_main(int argc, char** argv) { SkCommandLineFlags::Parse(argc, argv); SkAutoGraphics autoGraphics; PictureFactory pictureFactory = parse_FLAGS_bbh(); if (pictureFactory == NULL) { return 1; } bench_record(NULL, "NULL", pictureFactory); if (FLAGS_skps.isEmpty()) { return 0; } SkOSFile::Iter it(FLAGS_skps[0], ".skp"); SkString filename; bool failed = false; while (it.next(&filename)) { const SkString path = SkOSPath::SkPathJoin(FLAGS_skps[0], filename.c_str()); SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path.c_str())); if (!stream) { SkDebugf("Could not read %s.\n", path.c_str()); failed = true; continue; } SkAutoTUnref<SkPicture> src(SkPicture::CreateFromStream(stream)); if (!src) { SkDebugf("Could not read %s as an SkPicture.\n", path.c_str()); failed = true; continue; } bench_record(src, filename.c_str(), pictureFactory); } return failed ? 1 : 0; }
int tool_main(int argc, char** argv) { SkCommandLineFlags::Parse(argc, argv); SkAutoGraphics autoGraphics; if (FLAGS_bbh.count() > 1) { SkDebugf("Multiple bbh arguments supplied.\n"); return 1; } SkAutoTDelete<SkBBHFactory> bbhFactory(parse_FLAGS_bbh()); // Each run will use this timer overhead estimate to guess how many times it should run. static const int kOverheadLoops = 10000000; WallTimer timer; double overheadEstimate = 0.0; const double scale = timescale(); for (int i = 0; i < kOverheadLoops; i++) { timer.start(); timer.end(); overheadEstimate += timer.fWall * scale; } overheadEstimate /= kOverheadLoops; SkOSFile::Iter it(FLAGS_skps[0], ".skp"); SkString filename; bool failed = false; while (it.next(&filename)) { if (SkCommandLineFlags::ShouldSkip(FLAGS_match, filename.c_str())) { continue; } const SkString path = SkOSPath::Join(FLAGS_skps[0], filename.c_str()); SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path.c_str())); if (!stream) { SkDebugf("Could not read %s.\n", path.c_str()); failed = true; continue; } SkAutoTUnref<SkPicture> src( SkPicture::CreateFromStream(stream, sk_tools::LazyDecodeBitmap)); if (!src) { SkDebugf("Could not read %s as an SkPicture.\n", path.c_str()); failed = true; continue; } bench_record(*src, overheadEstimate, filename.c_str(), bbhFactory.get()); } return failed ? 1 : 0; }
int tool_main(int argc, char** argv) { SkCommandLineFlags::Parse(argc, argv); SkAutoGraphics autoGraphics; if (FLAGS_bbh.count() > 1) { SkDebugf("Multiple bbh arguments supplied.\n"); return 1; } SkAutoTDelete<SkBBHFactory> bbhFactory(parse_FLAGS_bbh()); bench_record(NULL, "NULL", bbhFactory.get()); if (FLAGS_skps.isEmpty()) { return 0; } SkOSFile::Iter it(FLAGS_skps[0], ".skp"); SkString filename; bool failed = false; while (it.next(&filename)) { if (SkCommandLineFlags::ShouldSkip(FLAGS_match, filename.c_str())) { continue; } const SkString path = SkOSPath::SkPathJoin(FLAGS_skps[0], filename.c_str()); SkAutoTUnref<SkStream> stream(SkStream::NewFromFile(path.c_str())); if (!stream) { SkDebugf("Could not read %s.\n", path.c_str()); failed = true; continue; } SkAutoTUnref<SkPicture> src( SkPicture::CreateFromStream(stream, sk_tools::LazyDecodeBitmap)); if (!src) { SkDebugf("Could not read %s as an SkPicture.\n", path.c_str()); failed = true; continue; } bench_record(src, filename.c_str(), bbhFactory.get()); } return failed ? 1 : 0; }