Home | History | Annotate | Download | only in gpu
      1 
      2 /*
      3  * Copyright 2011 Google Inc.
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  */
      8 
      9 
     10 #include "GrGpuFactory.h"
     11 
     12 #include "GrGpu.h"
     13 #include "gl/GrGLConfig.h"
     14 #include "gl/GrGLGpu.h"
     15 
     16 static CreateGpuProc gGpuFactories[kBackendCount] = { GrGLGpu::Create, nullptr };
     17 
     18 #ifdef SK_VULKAN
     19 extern GrGpu* vk_gpu_create(GrBackendContext backendContext, const GrContextOptions& options,
     20                             GrContext* context);
     21 GrGpuFactoryRegistrar gVkGpuFactoryProc(kVulkan_GrBackend, vk_gpu_create);
     22 #endif
     23 
     24 GrGpuFactoryRegistrar::GrGpuFactoryRegistrar(int i, CreateGpuProc proc) {
     25     gGpuFactories[i] = proc;
     26 }
     27 
     28 GrGpu* GrGpu::Create(GrBackend backend,
     29                      GrBackendContext backendContext,
     30                      const GrContextOptions& options,
     31                      GrContext* context) {
     32     SkASSERT((int)backend < kBackendCount);
     33     if (!gGpuFactories[backend]) {
     34         return nullptr;
     35     }
     36     return (gGpuFactories[backend])(backendContext, options, context);
     37 }
     38