| 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/browser/gpu/browser_gpu_channel_host_factory.h" | 5 #include "content/browser/gpu/browser_gpu_channel_host_factory.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/profiler/scoped_tracker.h" | 10 #include "base/profiler/scoped_tracker.h" |
| 11 #include "base/single_thread_task_runner.h" | 11 #include "base/single_thread_task_runner.h" |
| 12 #include "base/synchronization/waitable_event.h" | 12 #include "base/synchronization/waitable_event.h" |
| 13 #include "base/threading/thread_restrictions.h" | 13 #include "base/threading/thread_restrictions.h" |
| 14 #include "base/threading/thread_task_runner_handle.h" | 14 #include "base/threading/thread_task_runner_handle.h" |
| 15 #include "base/trace_event/memory_dump_manager.h" | 15 #include "base/trace_event/memory_dump_manager.h" |
| 16 #include "base/trace_event/trace_event.h" | 16 #include "base/trace_event/trace_event.h" |
| 17 #include "build/build_config.h" | 17 #include "build/build_config.h" |
| 18 #include "content/browser/gpu/browser_gpu_memory_buffer_manager.h" | 18 #include "content/browser/gpu/browser_gpu_memory_buffer_manager.h" |
| 19 #include "content/browser/gpu/gpu_data_manager_impl.h" | 19 #include "content/browser/gpu/gpu_data_manager_impl.h" |
| 20 #include "content/browser/gpu/gpu_process_host.h" | 20 #include "content/browser/gpu/gpu_process_host.h" |
| 21 #include "content/browser/gpu/shader_disk_cache.h" | 21 #include "content/browser/gpu/shader_disk_cache.h" |
| 22 #include "content/common/child_process_host_impl.h" | 22 #include "content/common/child_process_host_impl.h" |
| 23 #include "content/common/mojo/mojo_shell_connection_impl.h" |
| 23 #include "content/public/browser/browser_thread.h" | 24 #include "content/public/browser/browser_thread.h" |
| 24 #include "content/public/browser/content_browser_client.h" | 25 #include "content/public/browser/content_browser_client.h" |
| 25 #include "content/public/browser/gpu_data_manager.h" | 26 #include "content/public/browser/gpu_data_manager.h" |
| 26 #include "content/public/common/content_client.h" | 27 #include "content/public/common/content_client.h" |
| 27 #include "gpu/command_buffer/service/gpu_switches.h" | 28 #include "gpu/command_buffer/service/gpu_switches.h" |
| 28 #include "gpu/ipc/common/gpu_messages.h" | 29 #include "gpu/ipc/common/gpu_messages.h" |
| 29 #include "ipc/ipc_channel_handle.h" | 30 #include "ipc/ipc_channel_handle.h" |
| 30 #include "ipc/message_filter.h" | 31 #include "ipc/message_filter.h" |
| 31 | 32 |
| 33 #if defined(MOJO_RUNNER_CLIENT) |
| 34 #include "services/shell/runner/common/client_util.h" |
| 35 #endif |
| 36 |
| 32 namespace content { | 37 namespace content { |
| 33 | 38 |
| 34 BrowserGpuChannelHostFactory* BrowserGpuChannelHostFactory::instance_ = NULL; | 39 BrowserGpuChannelHostFactory* BrowserGpuChannelHostFactory::instance_ = NULL; |
| 35 | 40 |
| 36 class BrowserGpuChannelHostFactory::EstablishRequest | 41 class BrowserGpuChannelHostFactory::EstablishRequest |
| 37 : public base::RefCountedThreadSafe<EstablishRequest> { | 42 : public base::RefCountedThreadSafe<EstablishRequest> { |
| 38 public: | 43 public: |
| 39 static scoped_refptr<EstablishRequest> Create(CauseForGpuLaunch cause, | 44 static scoped_refptr<EstablishRequest> Create(CauseForGpuLaunch cause, |
| 40 int gpu_client_id, | 45 int gpu_client_id, |
| 41 uint64_t gpu_client_tracing_id, | 46 uint64_t gpu_client_tracing_id, |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 if (pending_request_.get()) | 295 if (pending_request_.get()) |
| 291 pending_request_->Wait(); | 296 pending_request_->Wait(); |
| 292 | 297 |
| 293 return gpu_channel_; | 298 return gpu_channel_; |
| 294 } | 299 } |
| 295 #endif | 300 #endif |
| 296 | 301 |
| 297 void BrowserGpuChannelHostFactory::EstablishGpuChannel( | 302 void BrowserGpuChannelHostFactory::EstablishGpuChannel( |
| 298 CauseForGpuLaunch cause_for_gpu_launch, | 303 CauseForGpuLaunch cause_for_gpu_launch, |
| 299 const base::Closure& callback) { | 304 const base::Closure& callback) { |
| 305 #if defined(MOJO_RUNNER_CLIENT) |
| 306 DCHECK(!shell::ShellIsRemote()); |
| 307 #endif |
| 300 if (gpu_channel_.get() && gpu_channel_->IsLost()) { | 308 if (gpu_channel_.get() && gpu_channel_->IsLost()) { |
| 301 DCHECK(!pending_request_.get()); | 309 DCHECK(!pending_request_.get()); |
| 302 // Recreate the channel if it has been lost. | 310 // Recreate the channel if it has been lost. |
| 303 gpu_channel_->DestroyChannel(); | 311 gpu_channel_->DestroyChannel(); |
| 304 gpu_channel_ = NULL; | 312 gpu_channel_ = NULL; |
| 305 } | 313 } |
| 306 | 314 |
| 307 if (!gpu_channel_.get() && !pending_request_.get()) { | 315 if (!gpu_channel_.get() && !pending_request_.get()) { |
| 308 // We should only get here if the context was lost. | 316 // We should only get here if the context was lost. |
| 309 pending_request_ = EstablishRequest::Create( | 317 pending_request_ = EstablishRequest::Create( |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 } | 379 } |
| 372 | 380 |
| 373 // static | 381 // static |
| 374 void BrowserGpuChannelHostFactory::InitializeShaderDiskCacheOnIO( | 382 void BrowserGpuChannelHostFactory::InitializeShaderDiskCacheOnIO( |
| 375 int gpu_client_id, | 383 int gpu_client_id, |
| 376 const base::FilePath& cache_dir) { | 384 const base::FilePath& cache_dir) { |
| 377 ShaderCacheFactory::GetInstance()->SetCacheInfo(gpu_client_id, cache_dir); | 385 ShaderCacheFactory::GetInstance()->SetCacheInfo(gpu_client_id, cache_dir); |
| 378 } | 386 } |
| 379 | 387 |
| 380 } // namespace content | 388 } // namespace content |
| OLD | NEW |