1 #include "DMCpuGMTask.h"
2 #include "DMExpectationsTask.h"
3 #include "DMPipeTask.h"
4 #include "DMQuiltTask.h"
5 #include "DMSerializeTask.h"
7 #include "DMWriteTask.h"
11 CpuGMTask::CpuGMTask(const char* config,
13 TaskRunner* taskRunner,
14 skiagm::GMRegistry::Factory gmFactory,
15 const Expectations& expectations,
16 SkColorType colorType)
17 : CpuTask(reporter, taskRunner)
18 , fGMFactory(gmFactory)
19 , fGM(fGMFactory(NULL))
20 , fName(UnderJoin(fGM->getName(), config))
21 , fExpectations(expectations)
22 , fColorType(colorType)
25 void CpuGMTask::draw() {
27 AllocatePixels(fColorType, fGM->getISize().width(), fGM->getISize().height(), &bm);
30 canvas.concat(fGM->getInitialTransform());
34 #define SPAWN(ChildTask, ...) this->spawnChild(SkNEW_ARGS(ChildTask, (*this, __VA_ARGS__)))
35 SPAWN(ExpectationsTask, fExpectations, bm);
37 SPAWN(PipeTask, fGMFactory(NULL), bm, PipeTask::kInProcess_Mode);
38 SPAWN(PipeTask, fGMFactory(NULL), bm, PipeTask::kCrossProcess_Mode);
39 SPAWN(PipeTask, fGMFactory(NULL), bm, PipeTask::kSharedAddress_Mode);
41 SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kNone_BBH, QuiltTask::kDefault_Backend);
42 SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kRTree_BBH, QuiltTask::kDefault_Backend);
43 SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kQuadTree_BBH, QuiltTask::kDefault_Backend);
44 SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kTileGrid_BBH, QuiltTask::kDefault_Backend);
46 SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kNone_BBH, QuiltTask::kSkRecord_Backend);
47 SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kRTree_BBH, QuiltTask::kSkRecord_Backend);
48 SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kQuadTree_BBH, QuiltTask::kSkRecord_Backend);
49 SPAWN(QuiltTask, fGMFactory(NULL), bm, QuiltTask::kTileGrid_BBH, QuiltTask::kSkRecord_Backend);
51 SPAWN(SerializeTask, fGMFactory(NULL), bm, SerializeTask::kNormal_Mode);
52 SPAWN(SerializeTask, fGMFactory(NULL), bm, SerializeTask::kSkRecord_Mode);
58 bool CpuGMTask::shouldSkip() const {
59 if (kRGB_565_SkColorType == fColorType && (fGM->getFlags() & skiagm::GM::kSkip565_Flag)) {
62 if (fGM->getFlags() & skiagm::GM::kGPUOnly_Flag) {