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_glx.h" 13#include "ui/gl/gl_context_osmesa.h" 14#include "ui/gl/gl_context_stub.h" 15#include "ui/gl/gl_implementation.h" 16#include "ui/gl/gl_surface_egl.h" 17#include "ui/gl/gl_surface_glx.h" 18#include "ui/gl/gl_surface_osmesa.h" 19#include "ui/gl/gl_surface_stub.h" 20 21namespace gfx { 22 23class GLShareGroup; 24 25scoped_refptr<GLContext> GLContext::CreateGLContext( 26 GLShareGroup* share_group, 27 GLSurface* compatible_surface, 28 GpuPreference gpu_preference) { 29 TRACE_EVENT0("gpu", "GLContext::CreateGLContext"); 30 switch (GetGLImplementation()) { 31 case kGLImplementationOSMesaGL: { 32 scoped_refptr<GLContext> context(new GLContextOSMesa(share_group)); 33 if (!context->Initialize(compatible_surface, gpu_preference)) 34 return NULL; 35 36 return context; 37 } 38 case kGLImplementationDesktopGL: { 39 scoped_refptr<GLContext> context(new GLContextGLX(share_group)); 40 if (!context->Initialize(compatible_surface, gpu_preference)) 41 return NULL; 42 43 return context; 44 } 45 case kGLImplementationEGLGLES2: { 46 scoped_refptr<GLContext> context(new GLContextEGL(share_group)); 47 if (!context->Initialize(compatible_surface, gpu_preference)) 48 return NULL; 49 50 return context; 51 } 52 case kGLImplementationMockGL: 53 return new GLContextStub; 54 default: 55 NOTREACHED(); 56 return NULL; 57 } 58} 59 60} // namespace gfx 61