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 14namespace gfx { 15 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 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