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_image.h" 6 7 #include "base/debug/trace_event.h" 8 #include "ui/gl/gl_image_shm.h" 9 #include "ui/gl/gl_image_stub.h" 10 #include "ui/gl/gl_implementation.h" 11 12 namespace gfx { 13 14 scoped_refptr<GLImage> GLImage::CreateGLImage(gfx::PluginWindowHandle window) { 15 TRACE_EVENT0("gpu", "GLImage::CreateGLImage"); 16 switch (GetGLImplementation()) { 17 case kGLImplementationOSMesaGL: 18 case kGLImplementationDesktopGL: 19 case kGLImplementationEGLGLES2: 20 return NULL; 21 case kGLImplementationMockGL: 22 return new GLImageStub; 23 default: 24 NOTREACHED(); 25 return NULL; 26 } 27 } 28 29 scoped_refptr<GLImage> GLImage::CreateGLImageForGpuMemoryBuffer( 30 gfx::GpuMemoryBufferHandle buffer, 31 gfx::Size size, 32 unsigned internalformat) { 33 TRACE_EVENT0("gpu", "GLImage::CreateGLImageForGpuMemoryBuffer"); 34 switch (GetGLImplementation()) { 35 case kGLImplementationOSMesaGL: 36 case kGLImplementationDesktopGL: 37 case kGLImplementationEGLGLES2: 38 switch (buffer.type) { 39 case SHARED_MEMORY_BUFFER: { 40 scoped_refptr<GLImageShm> image( 41 new GLImageShm(size, internalformat)); 42 if (!image->Initialize(buffer)) 43 return NULL; 44 45 return image; 46 } 47 default: 48 NOTREACHED(); 49 return NULL; 50 } 51 case kGLImplementationMockGL: 52 return new GLImageStub; 53 default: 54 NOTREACHED(); 55 return NULL; 56 } 57 } 58 59 } // namespace gfx 60