Home | History | Annotate | Download | only in dm
      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