Index: dm/DMReplayTask.cpp |
diff --git a/dm/DMReplayTask.cpp b/dm/DMReplayTask.cpp |
index 86838795d26d0929c4d092c4e6ca00070bf77fce..35a16cd48a90fcef235514ac01134247af4ad324 100644 |
--- a/dm/DMReplayTask.cpp |
+++ b/dm/DMReplayTask.cpp |
@@ -8,6 +8,9 @@ |
DEFINE_bool(replay, true, "If true, run picture replay tests."); |
DEFINE_bool(rtree, true, "If true, run picture replay tests with an rtree."); |
+DEFINE_bool(skr, true, "If true, run picture replay tests with SkRecord backend."); |
+ |
+static const char* kSuffixes[] = { "replay", "rtree", "skr" }; |
namespace DM { |
@@ -16,22 +19,23 @@ ReplayTask::ReplayTask(const Task& parent, |
SkBitmap reference, |
Mode mode) |
: CpuTask(parent) |
- , fUseRTree(mode == kRTree_Mode) |
- , fName(UnderJoin(parent.name().c_str(), fUseRTree ? "rtree" : "replay")) |
+ , fMode(mode) |
+ , fName(UnderJoin(parent.name().c_str(), kSuffixes[mode])) |
, fGM(gm) |
, fReference(reference) |
{} |
void ReplayTask::draw() { |
SkAutoTDelete<SkBBHFactory> factory; |
- if (fUseRTree) { |
+ if (kRTree_Mode == fMode) { |
factory.reset(SkNEW(SkRTreeFactory)); |
} |
- SkAutoTUnref<SkPicture> recorded(RecordPicture(fGM.get(), 0, factory.get())); |
+ SkAutoTUnref<SkPicture> recorded( |
+ RecordPicture(fGM.get(), factory.get(), kSkRecord_Mode == fMode)); |
SkBitmap bitmap; |
AllocatePixels(fReference, &bitmap); |
- DrawPicture(recorded, &bitmap); |
+ DrawPicture(*recorded, &bitmap); |
if (!BitmapsEqual(bitmap, fReference)) { |
this->fail(); |
this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap))); |
@@ -42,14 +46,12 @@ bool ReplayTask::shouldSkip() const { |
if (fGM->getFlags() & skiagm::GM::kSkipPicture_Flag) { |
return true; |
} |
- |
- if (FLAGS_rtree && fUseRTree) { |
- return false; |
- } |
- if (FLAGS_replay && !fUseRTree) { |
- return false; |
+ switch (fMode) { |
robertphillips
2014/06/24 18:34:46
if (!*) {
return true;
}
break;
?
mtklein
2014/06/24 19:17:03
Got rid of the switch entirely.
|
+ case kNormal_Mode: if (!FLAGS_replay) return true; break; |
+ case kRTree_Mode: if (!FLAGS_rtree) return true; break; |
+ case kSkRecord_Mode: if (!FLAGS_skr) return true; break; |
} |
- return true; |
+ return false; |
} |
} // namespace DM |