/* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "GrTypes.h" // must be before GrGLConfig.h #if GR_WIN32_BUILD // #include "GrGpuD3D9.h" #endif #include "GrGLConfig.h" #include "GrGpu.h" #include "GrGpuGLShaders.h" GrGpu* GrGpu::Create(GrEngine engine, GrPlatform3DContext context3D) { const GrGLInterface* glInterface = NULL; SkAutoTUnref glInterfaceUnref; if (kOpenGL_Shaders_GrEngine == engine) { glInterface = reinterpret_cast(context3D); if (NULL == glInterface) { glInterface = GrGLDefaultInterface(); // By calling GrGLDefaultInterface we've taken a ref on the // returned object. We only want to hold that ref until after // the GrGpu is constructed and has taken ownership. glInterfaceUnref.reset(glInterface); } if (NULL == glInterface) { #if GR_DEBUG GrPrintf("No GL interface provided!\n"); #endif return NULL; } if (!glInterface->validate()) { #if GR_DEBUG GrPrintf("Failed GL interface validation!\n"); #endif return NULL; } return new GrGpuGLShaders(glInterface); } else { return NULL; } }