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_android_native_buffer.h" 9 #include "ui/gl/gl_image_shm.h" 10 #include "ui/gl/gl_image_stub.h" 11 #include "ui/gl/gl_image_surface_texture.h" 12 #include "ui/gl/gl_implementation.h" 13 14 namespace gfx { 15 CreateGLImage(gfx::PluginWindowHandle window)16scoped_refptr<GLImage> GLImage::CreateGLImage(gfx::PluginWindowHandle window) { 17 TRACE_EVENT0("gpu", "GLImage::CreateGLImage"); 18 switch (GetGLImplementation()) { 19 case kGLImplementationEGLGLES2: 20 return NULL; 21 case kGLImplementationMockGL: 22 return new GLImageStub; 23 default: 24 NOTREACHED(); 25 return NULL; 26 } 27 } 28 CreateGLImageForGpuMemoryBuffer(gfx::GpuMemoryBufferHandle buffer,gfx::Size size,unsigned internalformat)29scoped_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 kGLImplementationEGLGLES2: 36 switch (buffer.type) { 37 case SHARED_MEMORY_BUFFER: { 38 scoped_refptr<GLImageShm> image( 39 new GLImageShm(size, internalformat)); 40 if (!image->Initialize(buffer)) 41 return NULL; 42 43 return image; 44 } 45 case ANDROID_NATIVE_BUFFER: { 46 scoped_refptr<GLImageAndroidNativeBuffer> image( 47 new GLImageAndroidNativeBuffer(size)); 48 if (!image->Initialize(buffer)) 49 return NULL; 50 51 return image; 52 } 53 case SURFACE_TEXTURE_BUFFER: { 54 scoped_refptr<GLImageSurfaceTexture> image( 55 new GLImageSurfaceTexture(size)); 56 if (!image->Initialize(buffer)) 57 return NULL; 58 59 return image; 60 } 61 default: 62 NOTREACHED(); 63 return NULL; 64 } 65 case kGLImplementationMockGL: 66 return new GLImageStub; 67 default: 68 NOTREACHED(); 69 return NULL; 70 } 71 } 72 73 } // namespace gfx 74