Home | History | Annotate | Download | only in dm
      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 sk_sp<SkSurface> NewGpuSurface(
     32         sk_gpu_test::GrContextFactory* grFactory,
     33         sk_gpu_test::GrContextFactory::ContextType type,
     34         sk_gpu_test::GrContextFactory::ContextOverrides overrides,
     35         SkImageInfo info,
     36         int samples,
     37         bool useDIText) {
     38     uint32_t flags = useDIText ? SkSurfaceProps::kUseDeviceIndependentFonts_Flag : 0;
     39     SkSurfaceProps props(flags, SkSurfaceProps::kLegacyFontHost_InitType);
     40     return SkSurface::MakeRenderTarget(grFactory->get(type, overrides), SkBudgeted::kNo,
     41                                        info, samples, &props);
     42 }
     43 
     44 }  // namespace DM
     45 
     46 #else// !SK_SUPPORT_GPU
     47 
     48 // Ganesh is not available.  Fake it.
     49 
     50 enum GrGLStandard {
     51     kNone_GrGLStandard,
     52     kGL_GrGLStandard,
     53     kGLES_GrGLStandard
     54 };
     55 static const int kGrGLStandardCnt = 3;
     56 
     57 class GrContext {
     58 public:
     59     void dumpCacheStats(SkString*) const {}
     60     void dumpGpuStats(SkString*) const {}
     61 };
     62 
     63 namespace sk_gpu_test {
     64 class GrContextFactory {
     65 public:
     66     GrContextFactory() {}
     67     explicit GrContextFactory(const GrContextOptions&) {}
     68 
     69     typedef int ContextType;
     70 
     71     static const ContextType kANGLE_ContextType         = 0,
     72                              kANGLE_GL_ContextType      = 0,
     73                              kCommandBuffer_ContextType = 0,
     74                              kDebugGL_ContextType       = 0,
     75                              kNVPR_ContextType          = 0,
     76                              kNativeGL_ContextType      = 0,
     77                              kGL_ContextType            = 0,
     78                              kGLES_ContextType          = 0,
     79                              kNullGL_ContextType        = 0,
     80                              kVulkan_ContextType        = 0,
     81                              kMetal_ContextType         = 0;
     82     static const int kContextTypeCnt = 1;
     83     enum class ContextOverrides {};
     84     void destroyContexts() {}
     85 
     86     void abandonContexts() {}
     87 
     88     void releaseResourcesAndAbandonContexts() {}
     89 };
     90 }  // namespace sk_gpu_test
     91 
     92 namespace DM {
     93 
     94 static const bool kGPUDisabled = true;
     95 
     96 static inline SkSurface* NewGpuSurface(sk_gpu_test::GrContextFactory*,
     97                                        sk_gpu_test::GrContextFactory::ContextType,
     98                                        sk_gpu_test::GrContextFactory::ContextOverrides,
     99                                        SkImageInfo,
    100                                        int,
    101                                        bool) {
    102     return nullptr;
    103 }
    104 
    105 }  // namespace DM
    106 
    107 #endif//SK_SUPPORT_GPU
    108 
    109 #endif//DMGpuSupport_DEFINED
    110