| 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,
|
|
|