1#ifndef DMBenchTask_DEFINED
2#define DMBenchTask_DEFINED
3
4#include "Benchmark.h"
5#include "DMReporter.h"
6#include "DMTask.h"
7#include "DMTaskRunner.h"
8#include "SkString.h"
9#include "SkTemplates.h"
10
11// Tasks that run an Benchmark once as a check that it doesn't crash.
12
13namespace DM {
14
15class NonRenderingBenchTask : public CpuTask {
16public:
17    NonRenderingBenchTask(const char* config, Reporter*, TaskRunner*, BenchRegistry::Factory);
18
19    virtual void draw() SK_OVERRIDE;
20    virtual bool shouldSkip() const SK_OVERRIDE;
21    virtual SkString name() const SK_OVERRIDE { return fName; }
22
23private:
24    SkAutoTDelete<Benchmark> fBench;
25    const SkString fName;
26};
27
28class CpuBenchTask : public CpuTask {
29public:
30    CpuBenchTask(const char* config, Reporter*, TaskRunner*, BenchRegistry::Factory, SkColorType);
31
32    virtual void draw() SK_OVERRIDE;
33    virtual bool shouldSkip() const SK_OVERRIDE;
34    virtual SkString name() const SK_OVERRIDE { return fName; }
35
36private:
37    SkAutoTDelete<Benchmark> fBench;
38    const SkString fName;
39    const SkColorType fColorType;
40};
41
42class GpuBenchTask : public GpuTask {
43public:
44    GpuBenchTask(const char* config,
45                 Reporter*,
46                 TaskRunner*,
47                 BenchRegistry::Factory,
48                 GrContextFactory::GLContextType,
49                 int sampleCount);
50
51    virtual void draw(GrContextFactory*) SK_OVERRIDE;
52    virtual bool shouldSkip() const SK_OVERRIDE;
53    virtual SkString name() const SK_OVERRIDE { return fName; }
54
55private:
56    SkAutoTDelete<Benchmark> fBench;
57    const SkString fName;
58    const GrContextFactory::GLContextType fContextType;
59    int fSampleCount;
60};
61
62}  // namespace DM
63
64#endif // DMBenchTask_DEFINED
65