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 "GrTypes.h" 11 12 #include "gl/GrGLConfig.h" 13 14 #include "GrGpu.h" 15 #include "gl/GrGpuGL.h" 16 17 GrGpu* GrGpu::Create(GrBackend backend, GrBackendContext backendContext, GrContext* context) { 18 19 const GrGLInterface* glInterface = NULL; 20 SkAutoTUnref<const GrGLInterface> glInterfaceUnref; 21 22 if (kOpenGL_GrBackend == backend) { 23 glInterface = reinterpret_cast<const GrGLInterface*>(backendContext); 24 if (NULL == glInterface) { 25 glInterface = GrGLDefaultInterface(); 26 // By calling GrGLDefaultInterface we've taken a ref on the 27 // returned object. We only want to hold that ref until after 28 // the GrGpu is constructed and has taken ownership. 29 glInterfaceUnref.reset(glInterface); 30 } 31 if (NULL == glInterface) { 32 #ifdef SK_DEBUG 33 GrPrintf("No GL interface provided!\n"); 34 #endif 35 return NULL; 36 } 37 GrGLContext ctx(glInterface); 38 if (ctx.isInitialized()) { 39 return SkNEW_ARGS(GrGpuGL, (ctx, context)); 40 } 41 } 42 return NULL; 43 } 44