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