1#ifndef DMGpuGMTask_DEFINED
2#define DMGpuGMTask_DEFINED
3
4#include "DMExpectations.h"
5#include "DMGpuSupport.h"
6#include "DMReporter.h"
7#include "DMTask.h"
8#include "DMTaskRunner.h"
9#include "SkBitmap.h"
10#include "SkString.h"
11#include "SkTemplates.h"
12#include "gm.h"
13
14// This is the main entry point for drawing GMs with the GPU.
15
16namespace DM {
17
18class GpuGMTask : public GpuTask {
19public:
20    GpuGMTask(const char* config,
21              Reporter*,
22              TaskRunner*,
23              skiagm::GMRegistry::Factory,
24              const Expectations&,
25              GrContextFactory::GLContextType,
26              int sampleCount);
27
28    virtual void draw(GrContextFactory*) SK_OVERRIDE;
29    virtual bool shouldSkip() const SK_OVERRIDE;
30    virtual SkString name() const SK_OVERRIDE { return fName; }
31
32private:
33    SkAutoTDelete<skiagm::GM> fGM;
34    const SkString fName;
35    const Expectations& fExpectations;
36    const GrContextFactory::GLContextType fContextType;
37    const int fSampleCount;
38};
39
40}  // namespace DM
41
42#endif  // DMGpuGMTask_DEFINED
43