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 "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 #include "ui/gl/gl_share_group.h" | 26 #include "ui/gl/gl_share_group.h" |
27 | 27 |
28 namespace content { | 28 namespace content { |
29 | 29 |
30 GpuChannelManager::GpuChannelManager( | 30 GpuChannelManager::GpuChannelManager( |
31 IPC::SyncChannel* channel, | 31 IPC::SyncChannel* channel, |
32 GpuWatchdog* watchdog, | 32 GpuWatchdog* watchdog, |
33 base::SingleThreadTaskRunner* task_runner, | 33 base::SingleThreadTaskRunner* task_runner, |
34 base::SingleThreadTaskRunner* io_task_runner, | 34 base::SingleThreadTaskRunner* io_task_runner, |
35 base::WaitableEvent* shutdown_event, | 35 base::WaitableEvent* shutdown_event, |
36 IPC::AttachmentBroker* broker, | |
37 gpu::SyncPointManager* sync_point_manager, | 36 gpu::SyncPointManager* sync_point_manager, |
38 GpuMemoryBufferFactory* gpu_memory_buffer_factory) | 37 GpuMemoryBufferFactory* gpu_memory_buffer_factory) |
39 : task_runner_(task_runner), | 38 : task_runner_(task_runner), |
40 io_task_runner_(io_task_runner), | 39 io_task_runner_(io_task_runner), |
41 channel_(channel), | 40 channel_(channel), |
42 watchdog_(watchdog), | 41 watchdog_(watchdog), |
43 shutdown_event_(shutdown_event), | 42 shutdown_event_(shutdown_event), |
44 gpu_memory_manager_( | 43 gpu_memory_manager_( |
45 this, | 44 this, |
46 GpuMemoryManager::kDefaultMaxSurfacesWithFrontbufferSoftLimit), | 45 GpuMemoryManager::kDefaultMaxSurfacesWithFrontbufferSoftLimit), |
47 sync_point_manager_(sync_point_manager), | 46 sync_point_manager_(sync_point_manager), |
48 gpu_memory_buffer_factory_(gpu_memory_buffer_factory), | 47 gpu_memory_buffer_factory_(gpu_memory_buffer_factory), |
49 attachment_broker_(broker), | |
50 weak_factory_(this) { | 48 weak_factory_(this) { |
51 DCHECK(task_runner); | 49 DCHECK(task_runner); |
52 DCHECK(io_task_runner); | 50 DCHECK(io_task_runner); |
53 } | 51 } |
54 | 52 |
55 GpuChannelManager::~GpuChannelManager() { | 53 GpuChannelManager::~GpuChannelManager() { |
56 // Destroy channels before anything else because of dependencies. | 54 // Destroy channels before anything else because of dependencies. |
57 gpu_channels_.clear(); | 55 gpu_channels_.clear(); |
58 if (default_offscreen_surface_.get()) { | 56 if (default_offscreen_surface_.get()) { |
59 default_offscreen_surface_->Destroy(); | 57 default_offscreen_surface_->Destroy(); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 DCHECK(!mailbox_manager_.get()); | 158 DCHECK(!mailbox_manager_.get()); |
161 mailbox_manager_ = gpu::gles2::MailboxManager::Create(); | 159 mailbox_manager_ = gpu::gles2::MailboxManager::Create(); |
162 } | 160 } |
163 share_group = share_group_.get(); | 161 share_group = share_group_.get(); |
164 mailbox_manager = mailbox_manager_.get(); | 162 mailbox_manager = mailbox_manager_.get(); |
165 } | 163 } |
166 | 164 |
167 scoped_ptr<GpuChannel> channel = | 165 scoped_ptr<GpuChannel> channel = |
168 CreateGpuChannel(share_group, mailbox_manager, client_id, | 166 CreateGpuChannel(share_group, mailbox_manager, client_id, |
169 client_tracing_id, allow_future_sync_points); | 167 client_tracing_id, allow_future_sync_points); |
170 IPC::ChannelHandle channel_handle = | 168 IPC::ChannelHandle channel_handle = channel->Init(shutdown_event_); |
171 channel->Init(shutdown_event_, attachment_broker_); | |
172 | 169 |
173 gpu_channels_.set(client_id, channel.Pass()); | 170 gpu_channels_.set(client_id, channel.Pass()); |
174 | 171 |
175 Send(new GpuHostMsg_ChannelEstablished(channel_handle)); | 172 Send(new GpuHostMsg_ChannelEstablished(channel_handle)); |
176 } | 173 } |
177 | 174 |
178 void GpuChannelManager::OnCloseChannel( | 175 void GpuChannelManager::OnCloseChannel( |
179 const IPC::ChannelHandle& channel_handle) { | 176 const IPC::ChannelHandle& channel_handle) { |
180 for (auto it = gpu_channels_.begin(); it != gpu_channels_.end(); ++it) { | 177 for (auto it = gpu_channels_.begin(); it != gpu_channels_.end(); ++it) { |
181 if (it->second->channel_id() == channel_handle.name) { | 178 if (it->second->channel_id() == channel_handle.name) { |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 | 273 |
277 gfx::GLSurface* GpuChannelManager::GetDefaultOffscreenSurface() { | 274 gfx::GLSurface* GpuChannelManager::GetDefaultOffscreenSurface() { |
278 if (!default_offscreen_surface_.get()) { | 275 if (!default_offscreen_surface_.get()) { |
279 default_offscreen_surface_ = | 276 default_offscreen_surface_ = |
280 gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size()); | 277 gfx::GLSurface::CreateOffscreenGLSurface(gfx::Size()); |
281 } | 278 } |
282 return default_offscreen_surface_.get(); | 279 return default_offscreen_surface_.get(); |
283 } | 280 } |
284 | 281 |
285 } // namespace content | 282 } // namespace content |
OLD | NEW |