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
16static CreateGpuProc gGpuFactories[kBackendCount] = { GrGLGpu::Create, nullptr };
17
18#ifdef SK_VULKAN
19extern GrGpu* vk_gpu_create(GrBackendContext backendContext, const GrContextOptions& options,
20                            GrContext* context);
21GrGpuFactoryRegistrar gVkGpuFactoryProc(kVulkan_GrBackend, vk_gpu_create);
22#endif
23
24GrGpuFactoryRegistrar::GrGpuFactoryRegistrar(int i, CreateGpuProc proc) {
25    gGpuFactories[i] = proc;
26}
27
28GrGpu* 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