1#ifndef DMGpuSupport_DEFINED
2#define DMGpuSupport_DEFINED
3
4// Provides Ganesh to DM,
5// or if it's not available, fakes it enough so most code doesn't have to know that.
6
7#include "SkSurface.h"
8
9#if SK_SUPPORT_GPU
10
11// Ganesh is available.  Yippee!
12
13#  include "GrContext.h"
14#  include "GrContextFactory.h"
15
16namespace DM {
17
18static const bool kGPUDisabled = false;
19
20static inline SkSurface* NewGpuSurface(GrContextFactory* grFactory,
21                                       GrContextFactory::GLContextType type,
22                                       SkImageInfo info,
23                                       int samples) {
24    return SkSurface::NewRenderTarget(grFactory->get(type), info, samples);
25}
26
27}  // namespace DM
28
29#else// !SK_SUPPORT_GPU
30
31// Ganesh is not available.  Fake it.
32
33class GrContextFactory {
34public:
35    typedef int GLContextType;
36
37    static const GLContextType kANGLE_GLContextType  = 0,
38                               kDebug_GLContextType  = 0,
39                               kMESA_GLContextType   = 0,
40                               kNVPR_GLContextType   = 0,
41                               kNative_GLContextType = 0,
42                               kNull_GLContextType   = 0;
43};
44
45namespace DM {
46
47static const bool kGPUDisabled = true;
48
49static inline SkSurface* NewGpuSurface(GrContextFactory*,
50                                       GrContextFactory::GLContextType,
51                                       SkImageInfo,
52                                       int) {
53    return NULL;
54}
55
56}  // namespace DM
57
58#endif//SK_SUPPORT_GPU
59
60#endif//DMGpuSupport_DEFINED
61