1 #include "DMCpuTask.h" 2 #include "DMExpectationsTask.h" 3 #include "DMPipeTask.h" 4 #include "DMReplayTask.h" 5 #include "DMSerializeTask.h" 6 #include "DMTileGridTask.h" 7 #include "DMUtil.h" 8 #include "DMWriteTask.h" 9 10 namespace DM { 11 12 CpuTask::CpuTask(const char* name, 13 Reporter* reporter, 14 TaskRunner* taskRunner, 15 const Expectations& expectations, 16 skiagm::GMRegistry::Factory gmFactory, 17 SkBitmap::Config config) 18 : Task(reporter, taskRunner) 19 , fGMFactory(gmFactory) 20 , fGM(fGMFactory(NULL)) 21 , fName(UnderJoin(fGM->shortName(), name)) 22 , fExpectations(expectations) 23 , fConfig(config) 24 {} 25 26 void CpuTask::draw() { 27 SkBitmap bitmap; 28 SetupBitmap(fConfig, fGM.get(), &bitmap); 29 30 SkCanvas canvas(bitmap); 31 canvas.concat(fGM->getInitialTransform()); 32 fGM->draw(&canvas); 33 canvas.flush(); 34 35 #define SPAWN(ChildTask, ...) this->spawnChild(SkNEW_ARGS(ChildTask, (*this, __VA_ARGS__))) 36 SPAWN(ExpectationsTask, fExpectations, bitmap); 37 38 SPAWN(PipeTask, fGMFactory(NULL), bitmap, false, false); 39 SPAWN(PipeTask, fGMFactory(NULL), bitmap, true, false); 40 SPAWN(PipeTask, fGMFactory(NULL), bitmap, true, true); 41 SPAWN(ReplayTask, fGMFactory(NULL), bitmap, false); 42 SPAWN(ReplayTask, fGMFactory(NULL), bitmap, true); 43 SPAWN(SerializeTask, fGMFactory(NULL), bitmap); 44 SPAWN(TileGridTask, fGMFactory(NULL), bitmap, SkISize::Make(16,16)); 45 46 SPAWN(WriteTask, bitmap); 47 #undef SPAWN 48 } 49 50 bool CpuTask::shouldSkip() const { 51 if (SkBitmap::kRGB_565_Config == fConfig && (fGM->getFlags() & skiagm::GM::kSkip565_Flag)) { 52 return true; 53 } 54 if (fGM->getFlags() & skiagm::GM::kGPUOnly_Flag) { 55 return true; 56 } 57 return false; 58 } 59 60 } // namespace DM 61