blob: 14f661ac387f0e2dc23956376bf6bb9b64726947 [file] [log] [blame]
mtklein@google.comd36522d2013-10-16 13:02:15 +00001#include "DMCpuTask.h"
2#include "DMReplayTask.h"
3#include "DMUtil.h"
4#include "SkCommandLineFlags.h"
5
6DEFINE_bool(replay, false, "If true, run replay tests for each CpuTask.");
7// TODO(mtklein): add the other various options
8
9namespace DM {
10
11CpuTask::CpuTask(const char* name,
12 Reporter* reporter,
13 TaskRunner* taskRunner,
14 const skiagm::ExpectationsSource& expectations,
15 skiagm::GMRegistry::Factory gmFactory,
16 SkBitmap::Config config)
17 : Task(reporter, taskRunner)
18 , fGMFactory(gmFactory)
19 , fGM(fGMFactory(NULL))
20 , fName(underJoin(fGM->shortName(), name))
21 , fExpectations(expectations.get(png(fName).c_str()))
22 , fConfig(config)
23 {}
24
25void CpuTask::draw() {
26 SkBitmap bitmap;
commit-bot@chromium.org846872f2013-10-16 18:21:03 +000027 bitmap.setConfig(fConfig, SkScalarCeilToInt(fGM->width()), SkScalarCeilToInt(fGM->height()));
mtklein@google.comd36522d2013-10-16 13:02:15 +000028 bitmap.allocPixels();
29 bitmap.eraseColor(0x00000000);
30 SkCanvas canvas(bitmap);
31
32 canvas.concat(fGM->getInitialTransform());
33 fGM->draw(&canvas);
34 canvas.flush();
35
commit-bot@chromium.org66bb3d12013-10-16 19:13:38 +000036 if (!meetsExpectations(fExpectations, bitmap)) {
mtklein@google.comd36522d2013-10-16 13:02:15 +000037 this->fail();
38 }
39
40 if (FLAGS_replay) {
41 this->spawnChild(SkNEW_ARGS(ReplayTask,
commit-bot@chromium.org66bb3d12013-10-16 19:13:38 +000042 ("replay", *this, fGMFactory(NULL), bitmap)));
mtklein@google.comd36522d2013-10-16 13:02:15 +000043 }
44}
45
46bool CpuTask::shouldSkip() const {
47 if (SkBitmap::kRGB_565_Config == fConfig && (fGM->getFlags() & skiagm::GM::kSkip565_Flag)) {
48 return true;
49 }
50 if (fGM->getFlags() & skiagm::GM::kGPUOnly_Flag) {
51 return true;
52 }
53 return false;
54}
55
56} // namespace DM