| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/common/gpu/gpu_channel_manager.h" | 5 #include "content/common/gpu/gpu_channel_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 #include "ui/gl/gl_share_group.h" | 28 #include "ui/gl/gl_share_group.h" |
| 29 | 29 |
| 30 namespace content { | 30 namespace content { |
| 31 | 31 |
| 32 GpuChannelManager::GpuChannelManager( | 32 GpuChannelManager::GpuChannelManager( |
| 33 IPC::SyncChannel* channel, | 33 IPC::SyncChannel* channel, |
| 34 GpuWatchdog* watchdog, | 34 GpuWatchdog* watchdog, |
| 35 base::SingleThreadTaskRunner* task_runner, | 35 base::SingleThreadTaskRunner* task_runner, |
| 36 base::SingleThreadTaskRunner* io_task_runner, | 36 base::SingleThreadTaskRunner* io_task_runner, |
| 37 base::WaitableEvent* shutdown_event, | 37 base::WaitableEvent* shutdown_event, |
| 38 IPC::AttachmentBroker* broker, | |
| 39 gpu::SyncPointManager* sync_point_manager, | 38 gpu::SyncPointManager* sync_point_manager, |
| 40 GpuMemoryBufferFactory* gpu_memory_buffer_factory) | 39 GpuMemoryBufferFactory* gpu_memory_buffer_factory) |
| 41 : task_runner_(task_runner), | 40 : task_runner_(task_runner), |
| 42 io_task_runner_(io_task_runner), | 41 io_task_runner_(io_task_runner), |
| 43 channel_(channel), | 42 channel_(channel), |
| 44 watchdog_(watchdog), | 43 watchdog_(watchdog), |
| 45 shutdown_event_(shutdown_event), | 44 shutdown_event_(shutdown_event), |
| 46 gpu_memory_manager_( | 45 gpu_memory_manager_( |
| 47 this, | 46 this, |
| 48 GpuMemoryManager::kDefaultMaxSurfacesWithFrontbufferSoftLimit), | 47 GpuMemoryManager::kDefaultMaxSurfacesWithFrontbufferSoftLimit), |
| 49 sync_point_manager_(sync_point_manager), | 48 sync_point_manager_(sync_point_manager), |
| 50 gpu_memory_buffer_factory_(gpu_memory_buffer_factory), | 49 gpu_memory_buffer_factory_(gpu_memory_buffer_factory), |
| 51 attachment_broker_(broker), | |
| 52 weak_factory_(this) { | 50 weak_factory_(this) { |
| 53 DCHECK(task_runner); | 51 DCHECK(task_runner); |
| 54 DCHECK(io_task_runner); | 52 DCHECK(io_task_runner); |
| 55 } | 53 } |
| 56 | 54 |
| 57 GpuChannelManager::~GpuChannelManager() { | 55 GpuChannelManager::~GpuChannelManager() { |
| 58 // Destroy channels before anything else because of dependencies. | 56 // Destroy channels before anything else because of dependencies. |
| 59 gpu_channels_.clear(); | 57 gpu_channels_.clear(); |
| 60 if (default_offscreen_surface_.get()) { | 58 if (default_offscreen_surface_.get()) { |
| 61 default_offscreen_surface_->Destroy(); | 59 default_offscreen_surface_->Destroy(); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 DCHECK(!mailbox_manager_.get()); | 162 DCHECK(!mailbox_manager_.get()); |
| 165 mailbox_manager_ = gpu::gles2::MailboxManager::Create(); | 163 mailbox_manager_ = gpu::gles2::MailboxManager::Create(); |
| 166 } | 164 } |
| 167 share_group = share_group_.get(); | 165 share_group = share_group_.get(); |
| 168 mailbox_manager = mailbox_manager_.get(); | 166 mailbox_manager = mailbox_manager_.get(); |
| 169 } | 167 } |
| 170 | 168 |
| 171 scoped_ptr<GpuChannel> channel = CreateGpuChannel( | 169 scoped_ptr<GpuChannel> channel = CreateGpuChannel( |
| 172 share_group, mailbox_manager, client_id, client_tracing_id, | 170 share_group, mailbox_manager, client_id, client_tracing_id, |
| 173 allow_future_sync_points, allow_real_time_streams); | 171 allow_future_sync_points, allow_real_time_streams); |
| 174 IPC::ChannelHandle channel_handle = | 172 IPC::ChannelHandle channel_handle = channel->Init(shutdown_event_); |
| 175 channel->Init(shutdown_event_, attachment_broker_); | |
| 176 | 173 |
| 177 gpu_channels_.set(client_id, channel.Pass()); | 174 gpu_channels_.set(client_id, channel.Pass()); |
| 178 | 175 |
| 179 Send(new GpuHostMsg_ChannelEstablished(channel_handle)); | 176 Send(new GpuHostMsg_ChannelEstablished(channel_handle)); |
| 180 } | 177 } |
| 181 | 178 |
| 182 void GpuChannelManager::OnCloseChannel( | 179 void GpuChannelManager::OnCloseChannel( |
| 183 const IPC::ChannelHandle& channel_handle) { | 180 const IPC::ChannelHandle& channel_handle) { |
| 184 for (auto it = gpu_channels_.begin(); it != gpu_channels_.end(); ++it) { | 181 for (auto it = gpu_channels_.begin(); it != gpu_channels_.end(); ++it) { |
| 185 if (it->second->channel_id() == channel_handle.name) { | 182 if (it->second->channel_id() == channel_handle.name) { |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 284 | 281 |
| 285 gfx::GLSurface* GpuChannelManager::GetDefaultOffscreenSurface() { | 282 gfx::GLSurface* GpuChannelManager::GetDefaultOffscreenSurface() { |
| 286 if (!default_offscreen_surface_.get()) { | 283 if (!default_offscreen_surface_.get()) { |
| 287 default_offscreen_surface_ = | 284 default_offscreen_surface_ = |
| 288 gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size()); | 285 gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size()); |
| 289 } | 286 } |
| 290 return default_offscreen_surface_.get(); | 287 return default_offscreen_surface_.get(); |
| 291 } | 288 } |
| 292 | 289 |
| 293 } // namespace content | 290 } // namespace content |
| OLD | NEW |