1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "ui/gl/gl_context.h" 6 7 #include "base/debug/trace_event.h" 8 #include "base/logging.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "ui/gl/gl_bindings.h" 11 #include "ui/gl/gl_context_egl.h" 12 #include "ui/gl/gl_context_osmesa.h" 13 #include "ui/gl/gl_context_stub.h" 14 #include "ui/gl/gl_context_wgl.h" 15 #include "ui/gl/gl_implementation.h" 16 #include "ui/gl/gl_surface_egl.h" 17 #include "ui/gl/gl_surface_osmesa.h" 18 #include "ui/gl/gl_surface_stub.h" 19 #include "ui/gl/gl_surface_wgl.h" 20 21 namespace gfx { 22 23 scoped_refptr<GLContext> GLContext::CreateGLContext( 24 GLShareGroup* share_group, 25 GLSurface* compatible_surface, 26 GpuPreference gpu_preference) { 27 TRACE_EVENT0("gpu", "GLContext::CreateGLContext"); 28 switch (GetGLImplementation()) { 29 case kGLImplementationOSMesaGL: { 30 scoped_refptr<GLContext> context(new GLContextOSMesa(share_group)); 31 if (!context->Initialize(compatible_surface, gpu_preference)) 32 return NULL; 33 34 return context; 35 } 36 case kGLImplementationEGLGLES2: { 37 scoped_refptr<GLContext> context(new GLContextEGL(share_group)); 38 if (!context->Initialize(compatible_surface, gpu_preference)) 39 return NULL; 40 41 return context; 42 } 43 case kGLImplementationDesktopGL: { 44 scoped_refptr<GLContext> context(new GLContextWGL(share_group)); 45 if (!context->Initialize(compatible_surface, gpu_preference)) 46 return NULL; 47 48 return context; 49 } 50 case kGLImplementationMockGL: 51 return new GLContextStub; 52 default: 53 NOTREACHED(); 54 return NULL; 55 } 56 } 57 58 } // namespace gfx 59