Add entry point for passing options to the GrContextFactory
authorkrajcevski <krajcevski@google.com>
Wed, 13 Aug 2014 17:46:31 +0000 (10:46 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 13 Aug 2014 17:46:31 +0000 (10:46 -0700)
R=bsalomon@google.com, mtklein@google.com, robertphillips@google.com

Author: krajcevski@google.com

Review URL: https://codereview.chromium.org/465073002

bench/nanobench.cpp
gm/gmmain.cpp
include/gpu/GrContextFactory.h

index a5353aa..3522c4a 100644 (file)
@@ -26,7 +26,7 @@
 #if SK_SUPPORT_GPU
     #include "gl/GrGLDefines.h"
     #include "GrContextFactory.h"
-    GrContextFactory gGrFactory;
+    SkAutoTDelete<GrContextFactory> gGrFactory;
 #endif
 
 __SK_FORCE_IMAGE_DECODER_LINKING;
@@ -288,7 +288,7 @@ static bool is_gpu_config_allowed(const char* name, GrContextFactory::GLContextT
     if (!is_cpu_config_allowed(name)) {
         return false;
     }
-    if (const GrContext* ctx = gGrFactory.get(ctxType)) {
+    if (const GrContext* ctx = gGrFactory->get(ctxType)) {
         return sampleCnt <= ctx->getMaxSampleCount();
     }
     return false;
@@ -362,9 +362,9 @@ static Target* is_enabled(Benchmark* bench, const Config& config) {
     }
 #if SK_SUPPORT_GPU
     else if (Benchmark::kGPU_Backend == config.backend) {
-        target->surface.reset(SkSurface::NewRenderTarget(gGrFactory.get(config.ctxType), info,
+        target->surface.reset(SkSurface::NewRenderTarget(gGrFactory->get(config.ctxType), info,
                                                          config.samples));
-        target->gl = gGrFactory.getGLContext(config.ctxType);
+        target->gl = gGrFactory->getGLContext(config.ctxType);
     }
 #endif
 
@@ -528,6 +528,10 @@ int nanobench_main() {
     SetupCrashHandler();
     SkAutoGraphics ag;
 
+#if SK_SUPPORT_GPU
+    gGrFactory.reset(SkNEW_ARGS(GrContextFactory, (GrContext::Options())));
+#endif
+
     if (kAutoTuneLoops != FLAGS_loops) {
         FLAGS_samples     = 1;
         FLAGS_gpuFrameLag = 0;
@@ -671,10 +675,10 @@ int nanobench_main() {
 
     #if SK_SUPPORT_GPU
         if (FLAGS_abandonGpuContext) {
-            gGrFactory.abandonContexts();
+            gGrFactory->abandonContexts();
         }
         if (FLAGS_resetGpuContext || FLAGS_abandonGpuContext) {
-            gGrFactory.destroyContexts();
+            gGrFactory->destroyContexts();
         }
     #endif
     }
index 9b51eb0..eb9147b 100644 (file)
@@ -2284,7 +2284,7 @@ int tool_main(int argc, char** argv) {
     SkTDArray<SkScalar> tileGridReplayScales;
 #if SK_SUPPORT_GPU
     GrGLStandard gpuAPI = kNone_GrGLStandard;
-    GrContextFactory* grFactory = new GrContextFactory;
+    GrContextFactory* grFactory = new GrContextFactory(GrContext::Options());
 #else
     GrGLStandard gpuAPI = 0;
     GrContextFactory* grFactory = NULL;
index e73eb78..f6677bb 100644 (file)
@@ -88,6 +88,7 @@ public:
         }
     }
 
+    explicit GrContextFactory(const GrContext::Options& opts) : fGlobalOptions(opts) { }
     GrContextFactory() { }
 
     ~GrContextFactory() { this->destroyContexts(); }
@@ -176,7 +177,7 @@ public:
 
         glCtx->makeCurrent();
         GrBackendContext p3dctx = reinterpret_cast<GrBackendContext>(glInterface.get());
-        grCtx.reset(GrContext::Create(kOpenGL_GrBackend, p3dctx));
+        grCtx.reset(GrContext::Create(kOpenGL_GrBackend, p3dctx, &fGlobalOptions));
         if (!grCtx.get()) {
             return NULL;
         }
@@ -207,7 +208,8 @@ private:
         SkGLContextHelper*        fGLContext;
         GrContext*                fGrContext;
     };
-    SkTArray<GPUContext, true> fContexts;
+    SkTArray<GPUContext, true>    fContexts;
+    const GrContext::Options      fGlobalOptions;
 };
 
 #endif