#include "DMCpuTask.h" #include "DMPipeTask.h" #include "DMReplayTask.h" #include "DMSerializeTask.h" #include "DMUtil.h" #include "DMWriteTask.h" namespace DM { CpuTask::CpuTask(const char* name, Reporter* reporter, TaskRunner* taskRunner, const skiagm::ExpectationsSource& expectations, skiagm::GMRegistry::Factory gmFactory, SkBitmap::Config config) : Task(reporter, taskRunner) , fGMFactory(gmFactory) , fGM(fGMFactory(NULL)) , fName(UnderJoin(fGM->shortName(), name)) , fExpectations(expectations.get(Png(fName).c_str())) , fConfig(config) {} void CpuTask::draw() { SkBitmap bitmap; SetupBitmap(fConfig, fGM.get(), &bitmap); SkCanvas canvas(bitmap); canvas.concat(fGM->getInitialTransform()); fGM->draw(&canvas); canvas.flush(); if (!MeetsExpectations(fExpectations, bitmap)) { this->fail(); } this->spawnChild(SkNEW_ARGS(PipeTask, (*this, fGMFactory(NULL), bitmap, false, false))); this->spawnChild(SkNEW_ARGS(PipeTask, (*this, fGMFactory(NULL), bitmap, true, false))); this->spawnChild(SkNEW_ARGS(PipeTask, (*this, fGMFactory(NULL), bitmap, true, true))); this->spawnChild(SkNEW_ARGS(ReplayTask, (*this, fGMFactory(NULL), bitmap, true))); this->spawnChild(SkNEW_ARGS(ReplayTask, (*this, fGMFactory(NULL), bitmap, false))); this->spawnChild(SkNEW_ARGS(SerializeTask, (*this, fGMFactory(NULL), bitmap))); this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap))); } bool CpuTask::shouldSkip() const { if (SkBitmap::kRGB_565_Config == fConfig && (fGM->getFlags() & skiagm::GM::kSkip565_Flag)) { return true; } if (fGM->getFlags() & skiagm::GM::kGPUOnly_Flag) { return true; } return false; } } // namespace DM