OLD | NEW |
| (Empty) |
1 #include "DMGpuTask.h" | |
2 | |
3 #include "DMExpectationsTask.h" | |
4 #include "DMUtil.h" | |
5 #include "DMWriteTask.h" | |
6 #include "SkCommandLineFlags.h" | |
7 #include "SkSurface.h" | |
8 #include "SkTLS.h" | |
9 | |
10 namespace DM { | |
11 | |
12 GpuTask::GpuTask(const char* config, | |
13 Reporter* reporter, | |
14 TaskRunner* taskRunner, | |
15 const Expectations& expectations, | |
16 skiagm::GMRegistry::Factory gmFactory, | |
17 GrContextFactory::GLContextType contextType, | |
18 int sampleCount) | |
19 : Task(reporter, taskRunner) | |
20 , fGM(gmFactory(NULL)) | |
21 , fName(UnderJoin(fGM->getName(), config)) | |
22 , fExpectations(expectations) | |
23 , fContextType(contextType) | |
24 , fSampleCount(sampleCount) | |
25 {} | |
26 | |
27 void GpuTask::draw() { | |
28 SkImageInfo info = SkImageInfo::Make(SkScalarCeilToInt(fGM->width()), | |
29 SkScalarCeilToInt(fGM->height()), | |
30 kPMColor_SkColorType, | |
31 kPremul_SkAlphaType); | |
32 SkAutoTUnref<SkSurface> surface(SkSurface::NewRenderTarget( | |
33 this->getGrContextFactory()->get(fContextType), info, fSampleCount))
; | |
34 SkCanvas* canvas = surface->getCanvas(); | |
35 | |
36 canvas->concat(fGM->getInitialTransform()); | |
37 fGM->draw(canvas); | |
38 canvas->flush(); | |
39 | |
40 SkBitmap bitmap; | |
41 bitmap.setConfig(info); | |
42 canvas->readPixels(&bitmap, 0, 0); | |
43 | |
44 #if GR_CACHE_STATS | |
45 gr->printCacheStats(); | |
46 #endif | |
47 | |
48 this->spawnChild(SkNEW_ARGS(ExpectationsTask, (*this, fExpectations, bitmap)
)); | |
49 this->spawnChild(SkNEW_ARGS(WriteTask, (*this, bitmap))); | |
50 } | |
51 | |
52 bool GpuTask::shouldSkip() const { | |
53 return SkToBool(fGM->getFlags() & skiagm::GM::kSkipGPU_Flag); | |
54 } | |
55 | |
56 } // namespace DM | |
OLD | NEW |