| Index: content/common/gpu/gpu_channel.cc
 | 
| diff --git a/content/common/gpu/gpu_channel.cc b/content/common/gpu/gpu_channel.cc
 | 
| index 43335d56174574930b7c0d99525ad0733a9b6723..106e922fe44ff83457a5e5bbf7c9428a49923256 100644
 | 
| --- a/content/common/gpu/gpu_channel.cc
 | 
| +++ b/content/common/gpu/gpu_channel.cc
 | 
| @@ -19,11 +19,13 @@
 | 
|  #include "content/common/gpu/gpu_messages.h"
 | 
|  #include "content/common/gpu/sync_point_manager.h"
 | 
|  #include "content/public/common/content_switches.h"
 | 
| +#include "gpu/command_buffer/service/image_manager.h"
 | 
|  #include "gpu/command_buffer/service/mailbox_manager.h"
 | 
|  #include "gpu/command_buffer/service/gpu_scheduler.h"
 | 
|  #include "ipc/ipc_channel.h"
 | 
|  #include "ipc/ipc_channel_proxy.h"
 | 
|  #include "ui/gl/gl_context.h"
 | 
| +#include "ui/gl/gl_image.h"
 | 
|  #include "ui/gl/gl_surface.h"
 | 
|  
 | 
|  #if defined(OS_POSIX)
 | 
| @@ -153,6 +155,7 @@ GpuChannel::GpuChannel(GpuChannelManager* gpu_channel_manager,
 | 
|        client_id_(client_id),
 | 
|        share_group_(share_group ? share_group : new gfx::GLShareGroup),
 | 
|        mailbox_manager_(mailbox ? mailbox : new gpu::gles2::MailboxManager),
 | 
| +      image_manager_(new gpu::gles2::ImageManager),
 | 
|        watchdog_(watchdog),
 | 
|        software_(software),
 | 
|        handle_messages_scheduled_(false),
 | 
| @@ -323,6 +326,7 @@ void GpuChannel::CreateViewCommandBuffer(
 | 
|        share_group,
 | 
|        window,
 | 
|        mailbox_manager_,
 | 
| +      image_manager_,
 | 
|        gfx::Size(),
 | 
|        disallowed_features_,
 | 
|        init_params.allowed_extensions,
 | 
| @@ -344,6 +348,39 @@ GpuCommandBufferStub* GpuChannel::LookupCommandBuffer(int32 route_id) {
 | 
|    return stubs_.Lookup(route_id);
 | 
|  }
 | 
|  
 | 
| +void GpuChannel::CreateImage(
 | 
| +    gfx::PluginWindowHandle window,
 | 
| +    int32 image_id,
 | 
| +    gfx::Size* size) {
 | 
| +  TRACE_EVENT1("gpu",
 | 
| +               "GpuChannel::CreateImage",
 | 
| +               "image_id",
 | 
| +               image_id);
 | 
| +
 | 
| +  *size = gfx::Size();
 | 
| +
 | 
| +  if (image_manager_->LookupImage(image_id)) {
 | 
| +    LOG(ERROR) << "CreateImage failed, image_id already in use.";
 | 
| +    return;
 | 
| +  }
 | 
| +
 | 
| +  scoped_refptr<gfx::GLImage> image = gfx::GLImage::CreateGLImage(window);
 | 
| +  if (!image)
 | 
| +    return;
 | 
| +
 | 
| +  image_manager_->AddImage(image.get(), image_id);
 | 
| +  *size = image->GetSize();
 | 
| +}
 | 
| +
 | 
| +void GpuChannel::DeleteImage(int32 image_id) {
 | 
| +  TRACE_EVENT1("gpu",
 | 
| +               "GpuChannel::DeleteImage",
 | 
| +               "image_id",
 | 
| +               image_id);
 | 
| +
 | 
| +  image_manager_->RemoveImage(image_id);
 | 
| +}
 | 
| +
 | 
|  void GpuChannel::LoseAllContexts() {
 | 
|    gpu_channel_manager_->LoseAllContexts();
 | 
|  }
 | 
| @@ -478,6 +515,7 @@ void GpuChannel::OnCreateOffscreenCommandBuffer(
 | 
|        share_group,
 | 
|        gfx::GLSurfaceHandle(),
 | 
|        mailbox_manager_.get(),
 | 
| +      image_manager_.get(),
 | 
|        size,
 | 
|        disallowed_features_,
 | 
|        init_params.allowed_extensions,
 | 
| 
 |