1 /* 2 * Copyright 2014 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef DMGpuSupport_DEFINED 9 #define DMGpuSupport_DEFINED 10 11 // Provides Ganesh to DM, 12 // or if it's not available, fakes it enough so most code doesn't have to know that. 13 14 #include "SkSurface.h" 15 16 // This should be safe to include even in no-gpu builds. Include by relative path so it 17 // can be found in non-gpu builds. 18 #include "../include/gpu/GrContextOptions.h" 19 20 #if SK_SUPPORT_GPU 21 22 // Ganesh is available. Yippee! 23 24 # include "GrContext.h" 25 # include "GrContextFactory.h" 26 27 namespace DM { 28 29 static const bool kGPUDisabled = false; 30 31 static inline SkSurface* NewGpuSurface(GrContextFactory* grFactory, 32 GrContextFactory::GLContextType type, 33 GrContextFactory::GLContextOptions options, 34 SkImageInfo info, 35 int samples, 36 bool useDIText) { 37 uint32_t flags = useDIText ? SkSurfaceProps::kUseDeviceIndependentFonts_Flag : 0; 38 SkSurfaceProps props(flags, SkSurfaceProps::kLegacyFontHost_InitType); 39 return SkSurface::NewRenderTarget(grFactory->get(type, options), SkBudgeted::kNo, 40 info, samples, &props); 41 } 42 43 } // namespace DM 44 45 #else// !SK_SUPPORT_GPU 46 47 // Ganesh is not available. Fake it. 48 49 enum GrGLStandard { 50 kNone_GrGLStandard, 51 kGL_GrGLStandard, 52 kGLES_GrGLStandard 53 }; 54 static const int kGrGLStandardCnt = 3; 55 56 class GrContext { 57 public: 58 void dumpCacheStats(SkString*) const {} 59 void dumpGpuStats(SkString*) const {} 60 }; 61 62 class GrContextFactory { 63 public: 64 GrContextFactory() {}; 65 explicit GrContextFactory(const GrContextOptions&) {} 66 67 typedef int GLContextType; 68 69 static const GLContextType kANGLE_GLContextType = 0, 70 kANGLE_GL_GLContextType = 0, 71 kCommandBufferES2_GLContextType = 0, 72 kCommandBufferES3_GLContextType = 0, 73 kDebug_GLContextType = 0, 74 kMESA_GLContextType = 0, 75 kNVPR_GLContextType = 0, 76 kNative_GLContextType = 0, 77 kNull_GLContextType = 0; 78 static const int kGLContextTypeCnt = 1; 79 enum GLContextOptions { 80 kNone_GLContextOptions = 0, 81 kEnableNVPR_GLContextOptions = 0x1, 82 }; 83 void destroyContexts() {} 84 85 void abandonContexts() {} 86 }; 87 88 namespace DM { 89 90 static const bool kGPUDisabled = true; 91 92 static inline SkSurface* NewGpuSurface(GrContextFactory*, 93 GrContextFactory::GLContextType, 94 GrContextFactory::GLContextOptions, 95 SkImageInfo, 96 int, 97 bool) { 98 return nullptr; 99 } 100 101 } // namespace DM 102 103 #endif//SK_SUPPORT_GPU 104 105 #endif//DMGpuSupport_DEFINED 106