Home | History | Annotate | Download | only in dm
      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 
     16 namespace DM {
     17 
     18 static const bool kGPUDisabled = false;
     19 
     20 static inline SkSurface* NewGpuSurface(GrContextFactory* grFactory,
     21                                        GrContextFactory::GLContextType type,
     22                                        GrGLStandard gpuAPI,
     23                                        SkImageInfo info,
     24                                        int samples) {
     25     return SkSurface::NewRenderTarget(grFactory->get(type, gpuAPI), info, samples, NULL);
     26 }
     27 
     28 }  // namespace DM
     29 
     30 #else// !SK_SUPPORT_GPU
     31 
     32 // Ganesh is not available.  Fake it.
     33 
     34 enum GrGLStandard {
     35     kNone_GrGLStandard,
     36     kGL_GrGLStandard,
     37     kGLES_GrGLStandard
     38 };
     39 
     40 class GrContextFactory {
     41 public:
     42     typedef int GLContextType;
     43 
     44     static const GLContextType kANGLE_GLContextType  = 0,
     45                                kDebug_GLContextType  = 0,
     46                                kMESA_GLContextType   = 0,
     47                                kNVPR_GLContextType   = 0,
     48                                kNative_GLContextType = 0,
     49                                kNull_GLContextType   = 0;
     50     void destroyContexts() {}
     51 
     52     void abandonContexts() {}
     53 };
     54 
     55 namespace DM {
     56 
     57 static const bool kGPUDisabled = true;
     58 
     59 static inline SkSurface* NewGpuSurface(GrContextFactory*,
     60                                        GrContextFactory::GLContextType,
     61                                        GrGLStandard,
     62                                        SkImageInfo,
     63                                        int) {
     64     return NULL;
     65 }
     66 
     67 }  // namespace DM
     68 
     69 #endif//SK_SUPPORT_GPU
     70 
     71 #endif//DMGpuSupport_DEFINED
     72