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
GrGpuFactoryRegistrar(int i,CreateGpuProc proc)24 GrGpuFactoryRegistrar::GrGpuFactoryRegistrar(int i, CreateGpuProc proc) {
25 gGpuFactories[i] = proc;
26 }
27
Create(GrBackend backend,GrBackendContext backendContext,const GrContextOptions & options,GrContext * context)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