Chromium Code Reviews| Index: bench/nanobench.cpp |
| diff --git a/bench/nanobench.cpp b/bench/nanobench.cpp |
| index eb48ec228d6b35886d6c8a87cd5e1c344f9479e3..ceb26d013d83d23acf2ace984afe57c3383c3f47 100644 |
| --- a/bench/nanobench.cpp |
| +++ b/bench/nanobench.cpp |
| @@ -13,7 +13,9 @@ |
| #include "ProcStats.h" |
| #include "ResultsWriter.h" |
| #include "RecordingBench.h" |
| +#include "Resources.h" |
| #include "SKPBench.h" |
| +#include "SKDBench.h" |
| #include "Stats.h" |
| #include "Timer.h" |
| @@ -439,7 +441,8 @@ public: |
| , fCurrentRecording(0) |
| , fCurrentScale(0) |
| , fCurrentSKP(0) |
| - , fCurrentUseMPD(0) { |
| + , fCurrentUseMPD(0) |
| + , fCurrentColorType(0) { |
| for (int i = 0; i < FLAGS_skps.count(); i++) { |
| if (SkStrEndsWith(FLAGS_skps[i], ".skp")) { |
| fSKPs.push_back() = FLAGS_skps[i]; |
| @@ -469,6 +472,21 @@ public: |
| if (FLAGS_mpd) { |
| fUseMPDs.push_back() = true; |
| } |
| + |
| + // Get the resource path for SKD benchmarks |
| + fResourceDir = GetResourcePath(); |
|
scroggo
2015/02/11 19:38:10
Sorry, I think I mislead you in conversation; I th
msarett
2015/02/11 21:57:01
Done.
|
| + if (fResourceDir.isEmpty()) { |
| + SkDebugf("SKDBench Failed: fResourceDir is not specified"); |
| + } |
| + |
| + // Get an iterator for resource files |
| + fFileIter = *(new SkOSFile::Iter(fResourceDir.c_str())); |
|
mtklein
2015/02/11 19:15:36
This pattern seems odd. It's allocating on the he
msarett
2015/02/11 21:57:01
Done.
|
| + |
| + // Choose the candidate color types |
| + SkColorType colorTypes[3] = { kN32_SkColorType, |
| + kRGB_565_SkColorType, |
| + kAlpha_8_SkColorType }; |
| + fColorTypes = *(new SkTArray<SkColorType>(colorTypes, 3)); |
|
mtklein
2015/02/11 19:15:36
If this sticks, I think you might want to write th
msarett
2015/02/11 21:57:01
Done.
|
| } |
| static bool ReadPicture(const char* path, SkAutoTUnref<SkPicture>* pic) { |
| @@ -562,6 +580,25 @@ public: |
| fCurrentScale++; |
| } |
| + // Run the SKDBenches |
| + SkString file; |
| + while (fFileIter.next(&file)) { |
| + // Run a separate benchmark for each image and color type |
| + SkString path = SkOSPath::Join(fResourceDir.c_str(), file.c_str()); |
| + return SkNEW_ARGS(SKDBench, ("SKD", path, |
|
scroggo
2015/02/11 19:38:10
As with SKPs and images in DM, I think we should c
msarett
2015/02/11 21:57:01
Done.
|
| + fColorTypes[fCurrentColorType])); |
| + } |
| + // Reset the iterator for the next color type |
| + if (++fCurrentColorType < fColorTypes.count()) { |
| + fFileIter.reset(fResourceDir.c_str()); |
| + while (fFileIter.next(&file)) { |
| + SkString path = SkOSPath::Join(fResourceDir.c_str(), |
| + file.c_str()); |
| + return SkNEW_ARGS(SKDBench, ("SKD", path, |
| + fColorTypes[fCurrentColorType])); |
| + } |
| + } |
| + |
| return NULL; |
| } |
| @@ -591,6 +628,8 @@ private: |
| SkTArray<SkScalar> fScales; |
| SkTArray<SkString> fSKPs; |
| SkTArray<bool> fUseMPDs; |
| + SkString fResourceDir; |
| + SkOSFile::Iter fFileIter; |
| double fSKPBytes, fSKPOps; |
| @@ -600,6 +639,8 @@ private: |
| int fCurrentScale; |
| int fCurrentSKP; |
| int fCurrentUseMPD; |
| + SkTArray<SkColorType> fColorTypes; |
| + int fCurrentColorType; |
| }; |
| int nanobench_main(); |