DM: add --rtree.
BUG=
R=epoger@google.com
Author: mtklein@google.com
Review URL: https://codereview.chromium.org/51243003
git-svn-id: http://skia.googlecode.com/svn/trunk@12033 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/dm/DMReplayTask.cpp b/dm/DMReplayTask.cpp
index a0ecf5f..0ec9e25 100644
--- a/dm/DMReplayTask.cpp
+++ b/dm/DMReplayTask.cpp
@@ -6,21 +6,25 @@
#include "SkPicture.h"
DEFINE_bool(replay, false, "If true, run picture replay tests.");
+DEFINE_bool(rtree, false, "If true, run picture replay tests with an rtree.");
namespace DM {
ReplayTask::ReplayTask(const Task& parent,
skiagm::GM* gm,
- SkBitmap reference)
+ SkBitmap reference,
+ bool useRTree)
: Task(parent)
- , fName(UnderJoin(parent.name().c_str(), "replay"))
+ , fName(UnderJoin(parent.name().c_str(), useRTree ? "rtree" : "replay"))
, fGM(gm)
, fReference(reference)
+ , fUseRTree(useRTree)
{}
void ReplayTask::draw() {
SkPicture recorded;
- RecordPicture(fGM.get(), &recorded);
+ const uint32_t flags = fUseRTree ? SkPicture::kOptimizeForClippedPlayback_RecordingFlag : 0;
+ RecordPicture(fGM.get(), &recorded, flags);
SkBitmap bitmap;
SetupBitmap(fReference.config(), fGM.get(), &bitmap);
@@ -32,7 +36,17 @@
}
bool ReplayTask::shouldSkip() const {
- return !FLAGS_replay || fGM->getFlags() & skiagm::GM::kSkipPicture_Flag;
+ if (fGM->getFlags() & skiagm::GM::kSkipPicture_Flag) {
+ return true;
+ }
+
+ if (FLAGS_rtree && fUseRTree) {
+ return false;
+ }
+ if (FLAGS_replay && !fUseRTree) {
+ return false;
+ }
+ return true;
}
} // namespace DM