blob: add5b385000eaa1c50d7bd52f99a75f2707483d7 [file] [log] [blame]
commit-bot@chromium.orgef57b7e2014-02-28 20:31:31 +00001#include "DMCpuGMTask.h"
commit-bot@chromium.org99589af2013-12-10 14:53:16 +00002#include "DMExpectationsTask.h"
commit-bot@chromium.org2d3a7892013-10-28 19:51:26 +00003#include "DMPipeTask.h"
commit-bot@chromium.orga90c6802014-04-30 13:20:45 +00004#include "DMQuiltTask.h"
commit-bot@chromium.orge3ff5582014-04-01 16:24:06 +00005#include "DMRecordTask.h"
mtklein@google.comd36522d2013-10-16 13:02:15 +00006#include "DMReplayTask.h"
commit-bot@chromium.org192cbf62013-10-21 18:40:25 +00007#include "DMSerializeTask.h"
mtklein@google.comd36522d2013-10-16 13:02:15 +00008#include "DMUtil.h"
mtklein@google.coma7a9f372013-10-18 20:52:44 +00009#include "DMWriteTask.h"
mtklein@google.comd36522d2013-10-16 13:02:15 +000010
11namespace DM {
12
commit-bot@chromium.orgef57b7e2014-02-28 20:31:31 +000013CpuGMTask::CpuGMTask(const char* config,
14 Reporter* reporter,
15 TaskRunner* taskRunner,
16 const Expectations& expectations,
17 skiagm::GMRegistry::Factory gmFactory,
18 SkColorType colorType)
19 : CpuTask(reporter, taskRunner)
mtklein@google.comd36522d2013-10-16 13:02:15 +000020 , fGMFactory(gmFactory)
21 , fGM(fGMFactory(NULL))
commit-bot@chromium.org38aeb0f2014-02-26 23:01:57 +000022 , fName(UnderJoin(fGM->getName(), config))
commit-bot@chromium.org99589af2013-12-10 14:53:16 +000023 , fExpectations(expectations)
commit-bot@chromium.org15a14052014-02-16 00:59:25 +000024 , fColorType(colorType)
mtklein@google.comd36522d2013-10-16 13:02:15 +000025 {}
26
commit-bot@chromium.orgef57b7e2014-02-28 20:31:31 +000027void CpuGMTask::draw() {
mtklein@google.comd36522d2013-10-16 13:02:15 +000028 SkBitmap bitmap;
commit-bot@chromium.org26642072014-05-15 17:33:31 +000029 AllocatePixels(fColorType, fGM->getISize().width(), fGM->getISize().height(), &bitmap);
mtklein@google.comd36522d2013-10-16 13:02:15 +000030
commit-bot@chromium.org192cbf62013-10-21 18:40:25 +000031 SkCanvas canvas(bitmap);
mtklein@google.comd36522d2013-10-16 13:02:15 +000032 canvas.concat(fGM->getInitialTransform());
33 fGM->draw(&canvas);
34 canvas.flush();
35
rmistry@google.comd6bab022013-12-02 13:50:38 +000036#define SPAWN(ChildTask, ...) this->spawnChild(SkNEW_ARGS(ChildTask, (*this, __VA_ARGS__)))
commit-bot@chromium.org99589af2013-12-10 14:53:16 +000037 SPAWN(ExpectationsTask, fExpectations, bitmap);
mtklein@google.comd36522d2013-10-16 13:02:15 +000038
commit-bot@chromium.org90b5a2a2014-05-14 17:55:32 +000039 SPAWN(PipeTask, fGMFactory(NULL), bitmap, PipeTask::kInProcess_Mode);
40 SPAWN(PipeTask, fGMFactory(NULL), bitmap, PipeTask::kCrossProcess_Mode);
41 SPAWN(PipeTask, fGMFactory(NULL), bitmap, PipeTask::kSharedAddress_Mode);
commit-bot@chromium.orga90c6802014-04-30 13:20:45 +000042 SPAWN(QuiltTask, fGMFactory(NULL), bitmap);
commit-bot@chromium.org90b5a2a2014-05-14 17:55:32 +000043 SPAWN(RecordTask, fGMFactory(NULL), bitmap, RecordTask::kOptimize_Mode);
44 SPAWN(RecordTask, fGMFactory(NULL), bitmap, RecordTask::kNoOptimize_Mode);
45 SPAWN(ReplayTask, fGMFactory(NULL), bitmap, ReplayTask::kNormal_Mode);
46 SPAWN(ReplayTask, fGMFactory(NULL), bitmap, ReplayTask::kRTree_Mode);
rmistry@google.comd6bab022013-12-02 13:50:38 +000047 SPAWN(SerializeTask, fGMFactory(NULL), bitmap);
mtklein@google.comee21a3e2013-11-26 18:52:31 +000048
rmistry@google.comd6bab022013-12-02 13:50:38 +000049 SPAWN(WriteTask, bitmap);
50#undef SPAWN
mtklein@google.comd36522d2013-10-16 13:02:15 +000051}
52
commit-bot@chromium.orgef57b7e2014-02-28 20:31:31 +000053bool CpuGMTask::shouldSkip() const {
commit-bot@chromium.org15a14052014-02-16 00:59:25 +000054 if (kRGB_565_SkColorType == fColorType && (fGM->getFlags() & skiagm::GM::kSkip565_Flag)) {
mtklein@google.comd36522d2013-10-16 13:02:15 +000055 return true;
56 }
57 if (fGM->getFlags() & skiagm::GM::kGPUOnly_Flag) {
58 return true;
59 }
60 return false;
61}
62
63} // namespace DM